我使用Spring java邮件程序类向我的用户发送电子邮件: 使用Spring framework 3.0.7.RELEASE的org.springframework.mail.javamail.JavaMailSenderImpl 1.4版。
我想为失败的电子邮件设置退回邮件,以转到我的用户的电子邮件地址,该地址与我的smtp服务器没有相同的域名。有谁知道这样做的方法? 例如: 我的系统发送电子邮件至email-does-not-exist@gmail.com。我的smtp服务器配置为具有somebusiness.com域。失败后,将退回发送给我的用户:test.user@gmail.com。
我多次阅读以下文章: Specifying the bounce-back address for email
我尝试使用他们设置mail.smtp.from属性的方法,但它根本不会发送任何电子邮件(甚至还没有计算来自无效电子邮件的回弹尝试)。
Properties p = new Properties();
p.put("mail.smtp.from", "test.user@gmail.com"); //If I comment this out, it sends emails again
mailSender.setJavaMailProperties(p);
Session session = Session.getDefaultInstance(p, null);
MimeMessage mimeMessage = new MimeMessage(session);
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,
false, "utf-8");
mimeMessage.setContent(emailBody, "text/html");
helper.setTo(toAddress);
helper.setSubject(subject);
helper.setFrom(fromAddress);
mailSender.send(mimeMessage);
任何人都知道为什么?显而易见的答案似乎是我们正在使用的smtp服务器阻止它,但我希望有其他潜在的想法。
答案 0 :(得分:0)
我遇到了类似的问题。我还没有解决方案,但目前我正在考虑用org.apache.commons.mail
替换Spring的邮件包,因为它有一个简单的setBounceAddress(emailAddressString)
方法。
请参阅用户指南的最后一部分“处理退回邮件”:
http://commons.apache.org/proper/commons-email//userguide.html
API文档:
答案 1 :(得分:0)
我刚检查了Apache Commons Mail如何实现它的弹跳功能,它实际上只设置了从地址。这意味着您可以通过org.springframework.mail.javamail.MimeMessageHelper
类上的setFrom(...)在Spring Mail中执行相同的操作。
来自org.apache.commons.mail.Email
类的源代码段:
if (this.bounceAddress != null) {
properties.setProperty(MAIL_SMTP_FROM, this.bounceAddress);
}