Cách đặt Đường dẫn trả về thành địa chỉ email khác với địa chỉ người gửi bằng JavaMail?Làm cách nào để đặt Đường dẫn trả về thành địa chỉ email ngoài địa chỉ người gửi bằng JavaMail?
Trả lời
Mã bên dưới thực hiện những gì bạn muốn và thực hiện theo đúng cách. Đọc lại những gì bạn cho mình đăng tải trong các bình luận
Từ: RFC2821: 4.4 Trace Information
Khi máy chủ cung cấp SMTP làm các "giao thức" của một tin nhắn, nó chèn một dòng lợi nhuận-đường tại đầu dữ liệu thư. Điều này sử dụng của đường dẫn trả về là bắt buộc; mail hệ thống PHẢI hỗ trợ nó. Đường dẫn trả về duy trì thông tin trong số từ lệnh MAIL. Tại đây, giao hàng cuối cùng có nghĩa là thư đã để lại môi trường SMTP. Thông thường, điều này có nghĩa là nó đã được gửi đến người dùng đích hoặc một thư thả xuống được liên kết, nhưng trong một số trường hợp, có thể được xử lý và truyền khác bởi hệ thống thư khác.
và một vài dòng sau.
Hệ thống SMTP có nguồn gốc thông báo KHÔNG NÊN gửi thư đã có tiêu đề Đường dẫn trả về.
Nếu bạn đọc kỹ điều này, bạn sẽ hiểu rằng chỉ đại lý máy chủ/phân phối cuối cùng mới được thêm tiêu đề Return-Path
. Nó không phải là một cái gì đó bạn là khách hàng (cố gắng để gửi một mail) nên làm. Máy chủ SMTP cuối cùng sẽ căn cứ tiêu đề Return-Path
trên địa chỉ người gửi của phong bì (SMTP MAIL FROM
phần).
Vì vậy, thiết lập mail.smtp.from
là cách chính xác để nói với java rằng địa chỉ người gửi phong bì phải khác với phần from
.
Nếu bạn gặp khó khăn khi hiểu những gì khác nhau của from
chỉ là hãy xem một phiên smtp telnet. Nơi [email protected]
phải tương ứng với smtp.mail.from
và [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]"));
Tôi đã có kinh nghiệm cùng một vấn đề và tìm ra giải pháp duy nhất thảo luận việc đưa tài sản "mail.smtp.from" props.put (" mail.smtp.from "," [email protected] ");
Vẫn còn giải pháp này không phù hợp với tôi vì tôi đang gửi rất nhiều email từ những người dùng khác nhau, do đó, việc tạo lại phiên cho mỗi e-mail sẽ là khủng khiếp đối với tính tiên đoán.
Vì vậy, tôi tìm thấy một giải pháp khác sau khi đọc nguồn JavaMail:
1) Sử dụng SMTPMessage (mở rộng MimeMessage) thay vì MimeMessage.
2) Sử dụng phương thức setEnvelopeFrom (String).
3) Sử dụng SMTPTransport để gửi e-mail (Tôi không thử với người khác).
Dưới đây là một ví dụ mã:
SMTPMessage message = new SMTPMessage(session);
message.setEnvelopeFrom("[email protected]");
...
transport.sendMessage(message, message.getAllRecipients());
- 1. Địa chỉ email người gửi động Devise
- 2. Làm cách nào để lấy địa chỉ email
- 3. Lync API: Làm cách nào để gửi tin nhắn nhanh đến địa chỉ liên hệ bằng địa chỉ email?
- 4. Jira gửi email từ địa chỉ người dùng
- 5. Cách gửi email đến nhiều địa chỉ bằng System.Net.Mail
- 6. địa chỉ email noreply.
- 7. Làm cách nào để đặt địa chỉ của Người gửi trong Jenkins?
- 8. Gửi email tới nhiều địa chỉ Android
- 9. Địa chỉ gửi thư PHP nhiều địa chỉ
- 10. Phân tích địa chỉ email đồng bằng thành 2 phần
- 11. Làm cách nào để lấy địa chỉ vật lý (MAC) của địa chỉ IP bằng C#?
- 12. Làm cách nào để trích xuất tên người dùng từ địa chỉ email bằng javascript?
- 13. truy cập địa chỉ email mặc định
- 14. Dns.GetHostEntry trả về nhiều địa chỉ IP
- 15. Html.Label để hiển thị địa chỉ email
- 16. Không thể gửi email đến nhiều địa chỉ/người nhận bằng C#
- 17. Làm cách nào để đặt địa chỉ IP cho giao diện TUN trên OSX (không có địa chỉ đích)?
- 18. preg_match địa chỉ php đường
- 19. người dùng tra cứu trong ActiveDirectory theo địa chỉ email
- 20. Javascript 'cvml' trong địa chỉ email
- 21. Nhận ID người dùng Facebook theo địa chỉ email
- 22. Cố gắng tránh gửi email khi địa chỉ email kết thúc bằng ".old"
- 23. Không thể nhận địa chỉ email người gửi với API Java EWS
- 24. Giới hạn Google Địa điểm tự động hoàn tất để chỉ trả lại địa chỉ
- 25. Dẫn đầu dấu gạch dưới trong một địa chỉ email?
- 26. Thư Java, đặt địa chỉ trả lời không hoạt động
- 27. Làm thế nào để có được địa chỉ email của người dùng twitter với twitter api
- 28. làm thế nào để thay đổi địa chỉ email mặc định cho postfix?
- 29. Gửi email đến nhiều địa chỉ email được phân tách bằng dấu phẩy
- 30. Sử dụng Lucene để tìm kiếm địa chỉ email
Tôi tin rằng nó sẽ là giải pháp. Nhưng từ những gì tôi đọc, máy chủ thư phải hỗ trợ nó. "Khi máy chủ SMTP phân phối thực hiện" giao hàng cuối cùng "của một tin nhắn, nó sẽ chèn một đường dẫn trả về ở đầu dữ liệu thư. Việc sử dụng đường dẫn trả về này là bắt buộc, các hệ thống thư PHẢI hỗ trợ nó. đường dẫn lưu giữ thông tin trong từ lệnh MAIL. " trong http://www.ietf.org/rfc/rfc2821.txt –
Ricardo
Kiểm tra câu trả lời mở rộng – jitter
tôi đã cố gắng thực hiện điều này trên nhiều cấp độ khác của mã, đây là giải pháp duy nhất đã hoạt động cho tôi – kommradHomer