【问题标题】:JavaMail crashes on Samsung Galaxy SIIIJavaMail 在三星 Galaxy SIII 上崩溃
【发布时间】:2013-01-28 20:05:36
【问题描述】:

我有以下 JavaMail 实现,它在 Android 2.2 (Froyo) 模拟器上运行良好(该项目的目标设置为最新版本 17)。当我在 Galaxy SIII 手机(安装了 Android 4.1.1)上加载它时,应用程序在“catch”上崩溃,由 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(); 
        } 
    }

【问题讨论】:

  • 添加一个 e.printStackTrace() 并发布输出请。消息似乎为空
  • @matheszabi:做到了(把它而不是 Toast 放在里面)。结果是应用程序没有崩溃,它正常工作只是没有发送电子邮件。我没有在“尝试”中得到任何祝酒词。在 Eclipse 控制台上没有打印任何消息(如果它没有崩溃,则意味着它没有通过“catch”)
  • 我想我知道:NetworkOnMainThreadException。似乎当目标高于版本 9 时,我需要在 AsyncTask 中执行网络操作 ...
  • 这将是解决方案!

标签: android crash jakarta-mail


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    相关资源
    最近更新 更多