【问题标题】:Getting Bounce email to another email address将退回电子邮件发送到另一个电子邮件地址
【发布时间】:2015-08-07 14:42:35
【问题描述】:

我在 smtp 设置了邮件服务器 mail.example.com。尝试使用它发送电子邮件,并且邮件服务器正确发送邮件。

但如果电子邮件退回,我希望他们在另一个电子邮件地址阅读,那就是一个 gmail 地址。所以为此我尝试过这样做

SMTPMessage sMTPMessage = new SMTPMessage(mailSession);

sMTPMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
sMTPMessage.setFrom(new InternetAddress(from));
sMTPMessage.setSubject(subject);
sMTPMessage.setContent(body, contentType);
sMTPMessage.setEnvelopeFrom(bounceAddr);


SMTPTransport smtpTrans = new SMTPTransport(mailSession, new URLName("smtp", smtpServer, port, null, userid, password));

smtpTrans.connect();
smtpTrans.sendMessage(sMTPMessage, sMTPMessage.getAllRecipients());
System.out.println("transport "+smtpTrans.getReportSuccess());
smtpTrans.close();

但它没有奏效。所以我没有收到退回的电子邮件信息。我还尝试设置 mail.smtp.from 属性,但也没有用。

我也看到了这个

props.put("smtp.mail.from", bounceAddr);

但是发件人电子邮件地址不在邮件服务器上,它在我的 gmail 地址上。那么从地址域有什么问题吗?

【问题讨论】:

    标签: java email smtp jakarta-mail


    【解决方案1】:

    如果您使用的是属性,请确保属性名称中没有拼写错误,就像上面所做的那样。

    您可以通过打开JavaMail session debugging 并在调试输出中的 SMTP 协议中查找 MAIL 命令来确保 JavaMail 正在使用您指定的信封发件人地址。

    但真正的问题可能是以下之一:

    1. 并非所有邮件服务器都支持此信息,即使它们 应该。
    2. 从您的邮件服务器开始并一直到目标邮件服务器的其中一个邮件服务器在转发您的邮件时可能没有转发此信息,因此检测到问题的邮件服务器没有将错误消息返回给的信息合适的地方。
    3. 您的邮件服务器可能不接受此信息,因为它不是您的邮件服务器管理的域中的电子邮件地址。

    其中一些问题可以通过检查邮件服务器的配置和行为来解决。但最终,当您发送到无效地址时,您根本不能依赖总是收到错误消息。

    您可以在JavaMail FAQ找到更多信息。

    【讨论】:

    • 当我尝试将它与 gmail smtp 一起使用时,它也不起作用。
    • 如您所说,我已经更新了我的问题中的属性线
    • 让我确定我理解这种情况...您连接到 Gmail SMTP 并使用您的 Gmail ID 进行身份验证。您使用该 ID 作为发件人地址发送邮件,但将“信封发件人”地址设置为不同的 Gmail ID。您发送到无效的 Gmail 地址。失败消息会返回到您的 Gmail ID,而不是“信封发件人”地址。那是对的吗?如果不是,请更详细地解释该场景。此外,您可能需要验证信封发件人地址,如here 所述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 2011-12-14
    相关资源
    最近更新 更多