如何使用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. 如何在javamail中設置正確的電子郵件地址?
- 2. 如何使用'INSTR'將值設置爲電子郵件地址?
- 3. 更改「發件人」地址的php電子郵件地址
- 4. Django:設置電子郵件的發件人地址
- 5. 如何使用gomail設置回覆電子郵件地址
- 6. 如何使用phpmailer隱藏發件人電子郵件地址?
- 7. java郵件 - 使用動態發件人電子郵件地址
- 8. 電子郵件支持部分的用戶地址爲「發件人地址」
- 9. 確定是否電子郵件地址的郵件列表地址或個人電子郵件地址
- 10. 如何將時間戳記設置爲電子郵件地址
- 11. Javamail - 如何獲取用戶的默認電子郵件地址?
- 12. 使用Python獲取發件人的電子郵件地址IMAP
- 13. 如何檢索發件人的電子郵件地址
- 14. 如何從Zend_Mail_Message獲取發件人的電子郵件地址?
- 15. 如何更改Django電子郵件中的發件人地址?
- 16. 如何獲取發件人的電子郵件地址
- 17. 如何從Outlook獲取發件人的電子郵件地址?
- 18. 如何設置mailx命令的發件人電子郵件地址?
- 19. 如何通過電子郵件發送電子郵件地址
- 20. 如何發送電子郵件在asp.net使用C#到任何電子郵件地址使用Gmail地址
- 21. 使用Google Apps設置無回覆電子郵件地址
- 22. 動態設計發件人電子郵件地址
- 23. 詹金斯電子郵件-EXT插件 - 使用scriptler設置味精發件人的電子郵件地址
- 24. 如何更新發件人電子郵件地址
- 25. 如何獲取電子郵件發件人地址
- 26. JavaMail的 - 面具「發件人」地址
- 27. JMeter - 如何模擬電子郵件地址和確認電子郵件地址
- 28. VBA Lotus Notes發件人電子郵件地址爲CC
- 29. VBA - 將Exchange Online電子郵件地址轉換爲SMTP地址
- 30. 如何從MFMailComposer的收件人地址獲取電子郵件地址
我相信這將是解決辦法。但從我閱讀的內容來看,郵件服務器必須支持它。 「當傳送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