Skip to main content
 首页 » 编程设计

android之JavaMail在Samsung Galaxy SIII上崩溃

2025年12月25日47lhb25

我有以下JavaMail实现,可以在Android 2.2(Froyo)模拟器上正常工作(该项目的目标设置为最新的版本17)。当我将其加载到Galaxy SIII手机(已安装Android 4.1.1)上时,通过LogCat指示,应用程序在“catch”上崩溃;甚至不显示捕获中的Toast。有什么提示吗?
这是代码:

/** 
     * Send an Email with a file in attach (the file is located in SDCARD/mailattach/ directory) 
     * @param emailAddress 
     * @param emailObject 
     * @param emailBody 
     * @param attachedFile name 
     */ 
    public static void sendEmail(String emailAddress, String emailSubject, String emailBody, String attachedFile)   { 
 
        Email m = new Email(email_config.get("ACCOUNT_NAME"), email_config.get("ACCOUNT_PASSWORD"));  
 
        String[] toArr = { emailAddress }; 
        // Email server static initializations 
        m.setHost(email_config.get("DEFAULT_SMTP_SERVER")); 
        m.setPort(email_config.get("DEFAULT_SMTP_PORT")); 
        if (email_config.get("SMTP_AUTHENTICATION") == "true")  { 
            m.setSauth(true); 
        } else { 
            m.setSauth(false); 
        } 
        m.setSport(email_config.get("SOCKET_FACTORY_PORT")); 
        if (email_config.get("DEBUG_MODE") == "true")   { 
            m.setDebug(true); 
        } else { 
            m.setDebug(false); 
        }        
        // Email transmitted parameters 
        m.setTo(toArr);  
        m.setFrom(email_config.get("ACCOUNT_NAME"));  
        m.setSubject(emailSubject);  
        m.setBody(emailBody); 
 
        String attachPath = Environment.getExternalStorageDirectory().getAbsolutePath() + 
                            File.separator + "mailattach" + File.separator + attachedFile; 
 
        try { 
            // set the attachment and send 
            m.addAttachment(attachPath);  
            if(m.send()) {  
                Toast.makeText(context, "Email was sent successfully.", Toast.LENGTH_LONG).show();  
            } else {  
                Toast.makeText(context, "Email was not sent.", Toast.LENGTH_LONG).show();  
            }  
        } catch(Exception e) {  
          Toast.makeText(context, "Error sending the email: "+e.toString(), Toast.LENGTH_LONG).show();  
        }  
    } 

请您参考如下方法:

确保不在主线程中调用网络,因为Android 4不允许这样做。