JavaMailSender SMTP退回 - 不同的域电子邮件地址

时间:2013-02-11 23:27:30

标签: spring smtp javamail email-bounces

我使用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服务器阻止它,但我希望有其他潜在的想法。

2 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。我还没有解决方案,但目前我正在考虑用org.apache.commons.mail替换Spring的邮件包,因为它有一个简单的setBounceAddress(emailAddressString)方法。

请参阅用户指南的最后一部分“处理退回邮件”:

http://commons.apache.org/proper/commons-email//userguide.html

API文档:

http://commons.apache.org/proper/commons-email//apidocs/org/apache/commons/mail/Email.html#setBounceAddress(java.lang.String)

答案 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);
}

在消息来源中查看: http://grepcode.com/file/repo1.maven.org/maven2/org.apache.commons/commons-email/1.2/org/apache/commons/mail/Email.java#539