我的应用程序现在在AIX框中的websphere 6.1中运行,其中有一个电子邮件通知模块,可以正常工作到今天。现在,相同的应用程序正在迁移到基于Tomcat的云平台,该平台在Linux服务器上运行。电子邮件将从新的基于Linux的平台发送给目标收件人,但电子邮件看起来很奇怪,没有主题,没有收件人电子邮件地址,附件不正确等等。
以前它是基于ant的构建,现在我用maven构建项目。我试着保留相同版本的弹簧和邮件api罐。
可能是什么问题,我在这里做错了什么?发送电子邮件时没有例外,很难确定问题。感谢您的帮助,并提前致谢。
代码:
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 :(得分:0)
检查您正在使用的JavaMail版本。如果您在应用程序中包含JavaMail jar文件,那么您的Linux系统上可能还会有一个JavaUail版本的JavaMail副本,而不是您的。查找libgnumail-java包。
答案 1 :(得分:0)
我找到了问题并解决了这个问题。我为axiom jar包含了maven依赖,它也依赖于“geronimo-javamail_1.4_spec”,并且还下载了这个geronimo java邮件jar。在发送电子邮件时,这个geronimo邮件api被用来代替原始的java邮件api。我添加了排除项,现在已经解决了。