Ответ 1
Приведенный ниже код делает то, что вы хотите, и делает это правильно. Перечитайте то, что вы сами разместили в комментарии
От: RFC2821: 4.4 Информация о трассировке
Когда сервер SMTP доставки "окончательная доставка" сообщения, это вставляет линию обратного пути в начало почтовых данных. Это использование возврата пути; почта системы ДОЛЖНЫ поддерживать его. линия возврата-пути сохраняет информации в из команды MAIL. Здесь окончательный доставка означает, что сообщение осталось среда SMTP. Обычно это будет означать, что оно было доставлено пользователь назначения или связанный с ним mail, но в некоторых случаях это может быть обрабатывается и передается другая почтовая система.
и несколько строк позже.
Система SMTP, отправляющая сообщения НЕ ДОЛЖНО отправлять сообщение, которое уже содержит заголовок Return-path.
Если вы внимательно прочитаете это, вы поймете, что только конечный smtp-сервер/агент доставки должен добавить заголовок Return-Path
. Это не то, что вы, как клиент (пытаетесь отправить почту), должны делать. Окончательный smtp-сервер будет основывать заголовок Return-Path
на адресе отправителя конверта (SMTP MAIL FROM
part).
Таким образом, установка mail.smtp.from
- это правильный способ сказать java, что адрес отправителя конверта должен отличаться от части from
.
Если у вас возникли проблемы с пониманием того, что разные from
просто смотрят на telnet smtp-session. Где [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]"));