Перед попыткой двойной буферизации посмотрите, решают ли SuspendLayout ()/ResumeLayout () проблему.
Приведенный ниже код делает то, что вы хотите, и делает это правильно. Перечитайте то, что вы сами написали в комментарии
From: RFC2821: 4.4 Trace Information
Когда SMTP-сервер доставки делает "окончательная доставка" сообщения, это вставляет линию обратного пути в начало почтовых данных. Это использование обратного пути не требуется; почта системы ДОЛЖНЫ поддерживать это. В линия обратного пути сохраняет информация в из команды MAIL. Здесь финал доставка означает, что сообщение ушло среда SMTP. Обычно это будет означать, что он был доставлен конечный пользователь или связанный сброс почты, но в некоторых случаях это может быть далее обрабатываются и передаются другая почтовая система.
и несколькими строчками позже.
SMTP-система, отправляющая сообщения НЕ СЛЕДУЕТ отправлять сообщение, которое уже содержит заголовок Return-path.
Если вы внимательно его прочитаете, то поймете, что только последний smtp-сервер / агент доставки должен добавлять заголовок Return-Path
. Это не то, что вы как клиент (пытаетесь отправить письмо) должны делать. Последний smtp-сервер основывает заголовок Return-Path
на адресе отправителя конверта (часть SMTP MAIL FROM
).
Таким образом, устанавливается mail.smtp. from
- это правильный способ указать Java, что адрес отправителя конверта должен отличаться от части из
.
Если у вас проблемы с пониманием того, чем отличается от
просто взгляните на smtp-сессию telnet. Где replyto@example.com
должен соответствовать smtp.mail.from
и from@example.com
в 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:<replyto@example.com>
250 <replyto@example.com> is syntactically correct
rcpt to:<rcpt@foo.com>
250 <rcpt@foo.com> verified
data
354 Enter message, ending with "." on a line by itself
To: Joey <to@joey.com>
From: Joey <from@example.com>
Subject: Joey
Hey Joey!
.
250 OK id=....
Quit
props.put("mail.smtp.from", "replyto@example.com");
Session session = Session.getDefaultInstance(props, null);
MimeMessage m = new MimeMessage(session);
m.addFrom(InternetAddress.parse("from@example.com"));