【问题标题】:email issue with spring and java mail apispring 和 java 邮件 api 的电子邮件问题
【发布时间】:2014-12-04 20:36:30
【问题描述】:

我的应用程序现在在 AIX 框中的 websphere 6.1 中运行,其中有一个电子邮件通知模块,直到今天都可以正常工作。现在,相同的应用程序正在迁移到基于 Tomcat 的云平台,该平台在 Linux 服务器中运行。电子邮件正在从基于 Linux 的新平台发送给目标收件人,但电子邮件看起来很奇怪,没有主题、没有收件人电子邮件地址、附件不正确等。

以前它是基于 ant 的构建,现在我使用 maven 构建项目。我试图保留相同版本的 spring 和 mail api jars。

可能是什么问题,我在这里做错了什么?发送电子邮件时没有例外,很难确定问题。感谢您的帮助,并提前致谢。

代码:

  public synchronized void sendwithAttachment(MailMessage mailMessage) throws MailException, MessagingException {
        String methodName = "sendwithAttachment";
    LogManager.info(LogConstants.NOTIFICATION,
            Constants.ENTERING_METHOD + methodName, this.getClass());
    try{
        MailSender MailSender = (MailSender) mailSender;
        Session session = MailSender.getSession();
        MimeMessageHelper message = new MimeMessageHelper(new MimeMessage(session), true, "UTF-8");
        message.setFrom(mailMessage.getFrom());
            message.setTo(mailMessage.getTo());
               message.setSubject(mailMessage.getSubject());
        message.setSentDate(new Date());
        message.setText(mailMessage.getText());

        DiskFileAttacher[] diskFileAttachments = mailMessage.getDiskFileAttachments();
        for (int i = 0; ((diskFileAttachments != null) && i < diskFileAttachments.length); i++) {
            message.addAttachment(diskFileAttachments[i].getAttachmentFilename(), new File(diskFileAttachments[i].getFilePath()));
        }
        InMemoryFileAttacher[] inMemoryFileAttachments = mailMessage.getInMemoryFileAttachments();
        for (int i = 0; ((inMemoryFileAttachments != null) && i < inMemoryFileAttachments.length); i++) {
            if(inMemoryFileAttachments[i].getFileObj()!=null){
            message.addAttachment(inMemoryFileAttachments[i].getFileName(),
                    inMemoryFileAttachments[i].getFileObj() );
            }else{
            message.addAttachment(inMemoryFileAttachments[i].getFileName(),
                    inMemoryFileAttachments[i]);
            }
        }
        List mimeMessageList = new ArrayList();
        mimeMessageList.add(message.getMimeMessage());
        MimeMessage[] mimeMessages = (MimeMessage[]) mimeMessageList.toArray(new MimeMessage[mimeMessageList.size()]);
        LogManager.info(LogConstants.NOTIFICATION,"before MailSender.send is called " + methodName, this.getClass());
        MailSender.send(mimeMessages);
    }catch(MailException e){
        LogManager.info(LogConstants.NOTIFICATION, "Some exception occured while sending emails...", this.getClass());
}

【问题讨论】:

    标签: spring email smtp jakarta-mail email-attachments


    【解决方案1】:

    检查您使用的 JavaMail 版本。如果您在应用程序中包含 JavaMail jar 文件,那么在您的 Linux 系统上可能还有一个 JavaMail 的 GNU 版本的副本正在被使用,而不是您的。寻找 libgnumail-java 包。

    【讨论】:

    • 感谢比尔的回答。该问题与另一个具有 maven 依赖项的邮件 jar 相对相似,现在已解决。
    【解决方案2】:

    我发现了问题并解决了这个问题。我包含了 axiom jar 的 maven 依赖项,它还具有“geronimo-javamail_1.4_spec”的依赖项,并且还下载了这个 geronimo java 邮件 jars。在发送电子邮件时,使用了这个 geronimo 邮件 api,而不是原来的 java 邮件 api。我添加了排除项,现在已解决。

    【讨论】:

      猜你喜欢
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-22
      相关资源
      最近更新 更多