如何使用JavaMail将返回路径设置为发件人地址以外的电子邮件地址?如何使用JavaMail将返回路径设置为发件人地址以外的电子邮件地址?
回答
下面的代码做你想做的,并以正确的方式做到这一点。重读你自己张贴在评论什么
来源:RFC2821: 4.4 Trace Information
在配送SMTP服务器使得消息的 “最终交付”,它 在 开始插入一个返回路径行邮件数据。这个使用 的返回路径是必需的;电子邮件 系统必须支持它。 返回路径行通过MAIL命令保留 中的信息 。在这里,最后的 传递意味着邮件已经离开 SMTP环境。通常,这个 将意味着它已经被传送到 目的地用户或相关联的 邮件丢失,但是在某些情况下它可能被 进一步处理并通过 传送另一个邮件系统。
和几行后。
消息,发起SMTP系统 不应发出已 包含返回路径头的消息。
如果您仔细阅读本文,您将会理解只有最终的smtp-server/delivery代理应该添加Return-Path
标头。这不是你作为客户(试图发送邮件)应该做的事情。最后的smtp服务器将把Return-Path
标题作为信封的发件人地址(SMTP MAIL FROM
部分)。
因此,设置mail.smtp.from
是告诉java信封发件人地址应该与from
部分不同的正确方法。
如果你有麻烦了解不同的from
的只是看看一个telnet smtp会话。凡[email protected]
应符合smtp.mail.from
和[email protected]
到m.addFrom(...);
telnet smtp.example.com 25
220 smtp.example.com ESMTP .....
helo computername
250 smtp.example.com Hello computername [123.123.123.123]
mail from:<[email protected]>
250 <[email protected]> is syntactically correct
rcpt to:<[email protected]>
250 <[email protected]> verified
data
354 Enter message, ending with "." on a line by itself
To: Joey <[email protected]>
From: Joey <[email protected]>
Subject: Joey
Hey Joey!
.
250 OK id=....
Quit
props.put("mail.smtp.from", "[email protected]");
Session session = Session.getDefaultInstance(props, null);
MimeMessage m = new MimeMessage(session);
m.addFrom(InternetAddress.parse("[email protected]"));
我已经经历了同样的问题,找到了唯一的解决办法讨论把财产“mail.smtp.from” props.put(” mail.smtp.from“,”[email protected]“);
仍然这种解决方案不适合我,因为我发送很多来自不同用户的电子邮件,因此为每个电子邮件重新创建会话对于prodictivity来说都是可怕的。
所以我发现另一种解决办法阅读JavaMail的来源后:
1)使用SMTPMessage(扩展的MimeMessage)代替的MimeMessage。
2)使用setEnvelopeFrom(String)方法。
3)使用SMTPTransport发送电子邮件(我没有尝试与其他人)。
这里是一个代码示例:
SMTPMessage message = new SMTPMessage(session);
message.setEnvelopeFrom("[email protected]");
...
transport.sendMessage(message, message.getAllRecipients());
- 1. Django:设置电子邮件的发件人地址
- 2. 如何使用gomail设置回复电子邮件地址
- 3. 如何使用phpmailer隐藏发件人电子邮件地址?
- 4. java邮件 - 使用动态发件人电子邮件地址
- 5. 确定是否电子邮件地址的邮件列表地址或个人电子邮件地址
- 6. 如何将时间戳记设置为电子邮件地址
- 7. 使用Python获取发件人的电子邮件地址IMAP
- 8. 如何从Zend_Mail_Message获取发件人的电子邮件地址?
- 9. 如何更改Django电子邮件中的发件人地址?
- 10. 如何设置mailx命令的发件人电子邮件地址?
- 11. 如何通过电子邮件发送电子邮件地址
- 12. 使用Google Apps设置无回复电子邮件地址
- 13. 如何更新发件人电子邮件地址
- 14. 如何获取电子邮件发件人地址
- 15. JavaMail的 - 面具“发件人”地址
- 16. VBA - 将Exchange Online电子邮件地址转换为SMTP地址
- 17. VBA Lotus Notes发件人电子邮件地址为CC
- 18. 如何从MFMailComposer的收件人地址获取电子邮件地址
- 19. 用Excel VBA获取发件人的电子邮件地址
- 20. 电子邮件发件人回复地址如何说“不回复”?
- 21. Xcode从地址簿获取联系人电子邮件地址
- 22. 刮电子邮件地址
- 23. noreply电子邮件地址。
- 24. Django电子邮件地址
- 25. 在电子邮件地址
- 26. 从电子邮件地址
- 27. 如何从长字符串中识别电子邮件地址并将电子邮件地址替换为我公司的电子邮件地址?
- 28. 如何使用$ _SESSION [user_id]变量将电子邮件地址形式的用户表格发送到该地址并发送电子邮件到该地址?
- 29. 访问联系人列表以使用电子邮件地址?
- 30. EWS:从X500转换的电子邮件地址以SMTP地址
我相信这将是解决办法。但从我阅读的内容来看,邮件服务器必须支持它。 “当传送SMTP服务器对邮件进行”最终传送“时,会在邮件数据的开头插入一个返回路径行,需要使用返回路径;邮件系统必须支持它;路径行保留MAIL命令的中的信息。“在http://www.ietf.org/rfc/rfc2821.txt –
Ricardo
2009-11-23 15:42:56
查看扩展的答案 – jitter 2009-11-23 16:15:10
我一直在尝试在许多其他级别的代码上这样做,这是唯一的解决方案已经为我工作 – kommradHomer 2017-07-13 15:10:24