JavaMailSender SMTP Bounce back - адрес электронной почты другого домена

Я использую класс Java-рассылки Spring для отправки сообщений электронной почты своим пользователям: org.springframework.mail.javamail.JavaMailSenderImpl версии 1.4 с использованием Spring framework 3.0.7.RELEASE.

Я хочу, чтобы сообщение о возврате отправлялось на адрес электронной почты моего пользователя, у которого нет того же домена, что и у моего SMTP-сервера. Кто-нибудь знает, как это сделать? Например: Моя система отправляет электронное письмо на адрес [email protected]. На моем SMTP-сервере настроен домен somebusiness.com. В случае неудачи отправьте отзыв моему пользователю: [email protected].

Я несколько раз читал следующую статью: Указание адреса возврата для электронной почты

Я попытался использовать их метод установки свойства mail.smtp.from, но он вообще не отправляет никаких писем (даже не считая попыток возврата из недействительных писем).

Properties p = new Properties();
p.put("mail.smtp.from", "[email protected]"); //If I comment this out, it sends emails again
mailSender.setJavaMailProperties(p);
Session session = Session.getDefaultInstance(p, null);
MimeMessage mimeMessage = new MimeMessage(session);

MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,
                false, "utf-8");
mimeMessage.setContent(emailBody, "text/html");
helper.setTo(toAddress);
helper.setSubject(subject);
helper.setFrom(fromAddress);
mailSender.send(mimeMessage);

У кого-нибудь есть идея, почему? Очевидный ответ: похоже, что используемый нами smtp-сервер блокирует его, но я надеялся на другие возможные идеи.


person abeauchamp    schedule 11.02.2013    source источник


Ответы (2)


У меня похожая проблема. У меня пока нет решения, но на данный момент я рассматриваю возможность замены почтового пакета Spring на org.apache.commons.mail, потому что он имеет простой setBounceAddress(emailAddressString) метод.

См. Самый последний раздел «Обработка отклоненных сообщений» руководства пользователя:

http://commons.apache.org/proper/commons-email//userguide.html

И документы API:

http://commons.apache.org/proper/commons-email//apidocs/org/apache/commons/mail/Email.html#setBounceAddress(java.lang.String)

person Phil    schedule 28.02.2013

Я только что проверил, как Apache Commons Mail реализует функцию возврата, и на самом деле просто устанавливает адрес отправителя. Это означает, что вы можете сделать то же самое в Spring Mail с помощью setFrom (...) в классе org.springframework.mail.javamail.MimeMessageHelper.

Фрагмент исходного кода из класса org.apache.commons.mail.Email:

if (this.bounceAddress != null) {
    properties.setProperty(MAIL_SMTP_FROM, this.bounceAddress);
}

Смотрите в источниках: http://grepcode.com/file/repo1.maven.org/maven2/org.apache.commons/commons-email/1.2/org/apache/commons/mail/Email..java#539

person Roman    schedule 19.01.2015
comment
Вызов setFrom(...) метода MimeMessageHelper устанавливает свойство from конкретного сообщения. Это не то же самое, что определение свойства почты Java mail.smtp.from! Но в опубликованном вами фрагменте это свойство установлено. Определение mail.smtp.fromis Email address to use for SMTP MAIL command. This sets the envelope return address. Defaults to msg.getFrom() or InternetAddress.getLocalAddress(). NOTE: mail.smtp.user was previously used for this. - person Fencer; 07.03.2018