Jak ustawić ścieżkę zwrotną na adres e-mail inny niż adres nadawcy przy użyciu JavaMail?Jak ustawić ścieżkę zwrotną na adres e-mail inny niż nadawca przy użyciu JavaMail?
Odpowiedz
Poniższy kod robi to, co chcesz i robi to we właściwy sposób. Przeczytaj jeszcze raz co sam pisał w komentarzu
Od: RFC2821: 4.4 Trace Information
Gdy serwer dostawy SMTP sprawia „ostatecznego przesyłki” z wiadomością, że wstawia linię Return-Path w początku dane poczty. Wymagane jest użycie ścieżki powrotnej ; mail systemy MUSZĄ go obsługiwać. Linia zwrotna zachowuje informacje z w poleceniu MAIL. W tym przypadku końcowa dostawa oznacza, że wiadomość pozostawiła w środowisku SMTP numer . Zwykle ten numer oznaczałby, że został dostarczony do użytkownika docelowego użytkownika lub powiązanej z nim kropli poczty elektronicznej, ale w niektórych przypadkach może być on dalej przetwarzany i przesyłany przez inny system pocztowy.
i kilka linii później.
System SMTP komunikatów pochodzących nie powinien wysyłać wiadomość, że już zawiera nagłówek Return-Path.
Jeśli uważnie przeczytacie to, zrozumiecie, że tylko końcowy serwer smtp/dostarczający ma dodać nagłówek Return-Path
. To nie jest coś, co powinien zrobić klient (próbując wysłać pocztę). Ostateczny serwer smtp będzie opierał nagłówek Return-Path
na adresie nadawcy koperty (część SMTP MAIL FROM
).
Tak więc ustawienie mail.smtp.from
jest poprawnym sposobem powiadomienia java, że adres nadawcy koperty powinien być inny niż część from
.
Jeśli masz problemy ze zrozumieniem, jakie są różne from
, wystarczy spojrzeć na sesję sms-a telnet. Gdzie [email protected]
powinna odpowiadać smtp.mail.from
i [email protected]
do 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]"));
jakie miałem ten sam problem i okazało się jedynym rozwiązaniem omówione oddanie nieruchomości "mail.smtp.from" props.put (” mail.smtp.from "," [email protected] ");
Nadal to rozwiązanie nie było odpowiednie dla mnie, ponieważ wysyłam dużo e-maili od różnych użytkowników, więc ponowne utworzenie sesji dla każdego e-maila byłoby okropne dla prodictivity.
Więc znalazłem inne rozwiązanie po przeczytaniu źródła JavaMail:
1) Wykorzystanie SMTPMessage (rozciąga MimeMessage) zamiast MimeMessage.
2) Użyj metody setEnvelopeFrom (String).
3) Użyj funkcji SMTPTransport, aby wysłać wiadomość e-mail (nie próbowałem innych).
Oto przykładowy kod:
SMTPMessage message = new SMTPMessage(session);
message.setEnvelopeFrom("[email protected]");
...
transport.sendMessage(message, message.getAllRecipients());
- 1. Wysyłanie javamail przy użyciu Office365
- 2. Czy można ustawić adres zwrotny inny niż adres z wtyczki Grails?
- 3. e-maile, inny „odpowiedzieć” adres niż adres nadawcy
- 4. Jak ustawić domyślną ścieżkę instalacji przy użyciu instalatora systemu Windows?
- 5. @ Html.EditorFor Jak ustawić atrybut type = "email"
- 6. Słuchaj na inny adres IP
- 7. Jak ustawić inny kompilator Java niż Eclipse IDE
- 8. Jak mogę nakładać tekst na inny przy użyciu CSS?
- 9. Django email
- 10. FirebaseAuthInvalidCredentialsException przy użyciu „Jedno konto na adres e-mail”
- 11. Jak ustawić wartości atrybutów przy użyciu odbicia
- 12. Jak zmienić adres nadawcy koperty przy użyciu phpmailera?
- 13. JavaMail API, Gmail-Auth i setFrom
- 14. dostęp do kontaktów i dostać adres email
- 15. Jak ustawić src obrazu przy użyciu jQuery
- 16. Uzyskaj ścieżkę do katalogu przy użyciu JFileChooser
- 17. Jak skonfigurować wtyczkę, aby ustawić inny katalog jako publiczny inny niż prywatny/statyczny /?
- 18. Jak ustawić strefę czasową przy użyciu Powershell
- 19. Kopiowanie z jednego pliku tekstowego na inny przy użyciu Python
- 20. Jak dostać inny niż root przy użyciu rejestratora z slf4j Log4J
- 21. JavaMail - javax.mail.MessagingException
- 22. jak ustawić atrybut przy użyciu javascript zmiennej
- 23. Jak ustawić liczbę przy użyciu Groupby?
- 24. Ustawianie reCAPTCHA wersja 2 zestaw inny język inny niż angielski
- 25. W jaki sposób nagłówek Return-Path może być inny niż rzeczywisty adres e-mail odbiorcy?
- 26. Jak ustawić domyślną wartość pola wprowadzania przy użyciu jQuery?
- 27. Uzyskaj adres mac w Javie przy użyciu getHardwareAddress niedeterministyczne
- 28. AppEngine Email: Nieuprawnione Sender
- 29. Jak załadować inny plik HTML przy użyciu JS
- 30. Łańcuchy encji przy użyciu operatora większego niż
wierzę byłoby rozwiązaniem. Ale z tego, co przeczytałem, serwer pocztowy musi go obsługiwać. "Gdy serwer dostarczania SMTP dokonuje" ostatecznego dostarczenia "komunikatu, wstawia on linię zwrotną na początku danych poczty .Te użycie ścieżki powrotnej jest wymagane, systemy pocztowe MUSZĄ go obsługiwać. linia ścieżki przechowuje informacje w <ścieżka odwrotna> od polecenia MAIL. " w http://www.ietf.org/rfc/rfc2821.txt – Ricardo
Sprawdź rozszerzoną odpowiedź – jitter
Próbowałem zrobić to na wielu innych poziomach kodu, to jest jedyne rozwiązanie, które zadziałało dla mnie – kommradHomer