当前位置: 首页 > 面试题库 >

在Java Application中的Amazon服务器上通过JavaMail API发送带有附件的邮件时,出现空指针异常

严欣怡
2023-03-14
问题内容

在使用javamail API在亚马逊服务器中发送带有pdf附件的邮件时,在日志中抛出空指针异常。但是相同的代码在本地工作。

public void sendMail(final String mailTo, final String mailSubject, final String mailText, final String filePath, final String fileName) {
    logger.info("Inside sendMail Method...");
    final Properties config = createConfiguration();

    // Creates a mail session. We need to supply username and password for Gmail authentication.
    final Session session = Session.getInstance(config, new Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(mailFrom, mailPassword);
        }
    });

    // Creates email message
    final MimeMessage message = new MimeMessage(session);
    try {
        message.setFrom(new InternetAddress(mailFrom));
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
        message.setSubject(mailSubject);

        final BodyPart messagePart = new MimeBodyPart();
        messagePart.setContent(mailText, contentType);

        final MimeMultipart multipart = new MimeMultipart();
        multipart.addBodyPart(messagePart);

        if (filePath != null) {
            final MimeBodyPart attachmentPart = new MimeBodyPart();
            final URL url;
            try {
                url = new URL(filePath);
                final DataSource source = new URLDataSource(url);
                attachmentPart.setDataHandler(new DataHandler(source));
                attachmentPart.setFileName(fileName);
                multipart.addBodyPart(attachmentPart);
            } catch (MalformedURLException e) {
                logger.error("Malformed URL Exception: " + e.getMessage());
            }
        }
        message.setContent(multipart);
        // Send a message
        Transport.send(message);
        logger.info("Mail triggered successfully");
    } catch (final AddressException e) {
        logger.error("Address Exception: " + e.getMessage());
    } catch (final MessagingException e) {
        logger.error("Messaging Exception: " + e.getMessage());
    }
}

请在下面找到amozon服务器应用程序日志上生成的异常。

2014-03-20 19:01:30,936 [DefaultQuartzScheduler_Worker-2] INFO            net.app.api.jobs.MailJob - Error in triggering the mail : null
java.lang.NullPointerException
at javax.mail.internet.MimeUtility.getEncoding(MimeUtility.java:226)
at javax.mail.internet.MimeUtility.getEncoding(MimeUtility.java:299)
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1375)
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1021)
at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:419)
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1354)
at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2107)
at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2075)
at javax.mail.Transport.send(Transport.java:123)
at net.app.api.mail.MailTrigger.sendMail(MailTrigger.java:104)
at net.app.api.jobs.MailJob.execute(MailJob.java:41)
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)

有人请为此提供一些可行的解决方案。提前致谢。


问题答案:

问题可能是您无法访问filePath中的URL。

filePath是“ file:” URL吗?如果是这样,为什么不只使用FileDataSource?



 类似资料:
  • 问题内容: 是否有用于NodeJS的库,用于发送带有附件的邮件? 问题答案: 是的,这非常简单,我使用nodemailer: 然后阅读文件并发送电子邮件:

  • 问题内容: 有没有人有通过Amazon SES(使用Java)发送带有附件的电子邮件的示例? 问题答案: 也许有些迟了,但是您可以使用以下代码(您还需要Java Mail):

  • 本文向大家介绍Codeigniter实现发送带附件的邮件,包括了Codeigniter实现发送带附件的邮件的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Codeigniter实现发送带附件的邮件的方法。分享给大家供大家参考。具体分析如下: attach() 方法允许你的发邮件时带上附件,下面是演示代码 希望本文所述对大家基于Codeigniter的php程序设计有所帮助。

  • 我正在尝试上载一个csv文件到服务器。下面是我的HTML代码: 还有我的JS:- 我面临以下错误:- 加载资源失败:服务器响应的状态为500(HTTP/1.1 500) 可能未经处理的拒绝:{“data”:{“timestamp”:1510643953084,“status”:500,“error”:“内部服务器错误”,“exception”:“java.lang.NullPointerExcep

  • 问题内容: 我遇到了一个问题:直到今天,我使用包含以下内容的标头使用PHP发送HTML邮件 现在,我添加了添加附件的功能。为此,我不得不将此行更改为 现在,使用,邮件的其余部分(即普通文本)将显示为文本/纯文本。我怎么能知道附件有效并且邮件文本仍然是HTML? 问题答案: 要发送带有附件的电子邮件,我们需要使用multipart / mixed MIME类型,该类型指定混合类型将包含在电子邮件中。

  • 我正试图通过console/cron使用CakePHP 1.3电子邮件组件发送电子邮件。电子邮件被发送出去了 通过表单完成后,电子邮件将与附件一起成功发送。我已经尝试添加了$this- 我的代码如下: 所以,基本上我的问题是,当我通过控制台/cron运行外壳脚本时,我如何获得附件发送的电子邮件。 提前谢谢你。