2014-10-09 98 views
0

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

此前,它是基于蚂蚁的构建和现在我用maven构建项目。我试图保持同一版本的春天和邮件api罐子。

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

Generated Email with no to, subject, attachment 代码:

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()); 
} 

回答

0

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

+0

谢谢Bill回答。这个问题与另一个具有Maven依赖的邮件jar相似,现在已经解决了。 – kumar 2014-10-10 14:40:59

0

我发现了问题并解决了这个问题。我包含了公理瓶子的maven依赖项,它也依赖于“geronimo-javamail_1.4_spec”,并且这个geronimo java邮件罐也被下载。在发送电子邮件时,使用了geronimo mail api而不是原始的java邮件api。我添加了排除内容,现在已解决。