Liferay mail отправляет имя хоста и информацию о пользователе с заголовком - PullRequest
0 голосов
/ 02 ноября 2018

Я использую Liferay mail (MailServiceUtil / MailEngine) для отправки почты пользователям. Я настроил почту в ServerAdministration> Почта. Мой код, как показано ниже:

    InternetAddress toAddress = new InternetAddress(emailTo);            
    InternetAddress fromAddress = new InternetAddress("XXXXXXX","XX");
    MailMessage mailMessage = new MailMessage();
    mailMessage.setTo(toAddress);
    mailMessage.setFrom(fromAddress);
    mailMessage.setSubject(subject);
    mailMessage.setBody(emailbody);
    mailMessage.setHTMLFormat(true);
    MailServiceUtil.sendEmail(mailMessage);

Ниже информация отправляется вышеуказанным кодом:

Получено: от имени хоста ([НЕДОСТУПНО]. [XXX.XXX.XXX])

И

Идентификатор сообщения: <1567646772.21541142172709.JavaMail.user@hostname>

У меня есть метод для изменения идентификатора сообщения, но я не могу изменить имя хоста (имя хоста на localhost).

Я попытался установить mail.session.mail.smtp.localhost = localhost, добавив вручную указать дополнительные свойства JavaMail для переопределения вышеуказанной конфигурации или portal-ext.propeties. Но безуспешно. Пожалуйста, помогите установить это как localhost.

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Идентификатор сообщения получен из результатов InternetAddress.getLocalAddress , которыми вы можете полностью управлять, установив свойство mail.from .

0 голосов
/ 02 ноября 2018

Я полагаю, вы говорите о почтовых заголовках, таких как:

Received: from host.example.com ([x.x.x.x]) by anotherhost.example.com
 (anotherhost [y.y.y.y]) with ESMTPS (Nemesis) id blablablabla;
 Thu, 01 Nov 2018 11:07:15 +0100

AFAIK, они добавляются следующим в цепочке - например, ваш сервер Liferay является отправителем и не получал почту от кого-либо, но перенаправляет ее на следующий прыжок в списке обработчиков почты. На следующем сервере этот сервер добавляет информацию о происхождении этого письма, так что он находится вне вашего контроля на стороне Liferay или Javamail.

Идентификатор сообщения - это то, что генерируется, чтобы быть уникальным, и возможно переопределить значение по умолчанию (это то, что вы получили). Протокол систем, которые пересылали эту почту, создается следующей системой, поэтому не может быть переопределен в исходной системе.

Редактировать (реакция на ваш комментарий):

Даже если есть способ, чтобы последняя машина в списке идентифицировалась как "localhost", что хорошего в этом на самом деле? При следующем запуске правильно будут указаны IP-адрес и имя хоста обратного просмотра. И вы только усложните отладку, если вам нужно выяснить, на каком «локальном хосте» пришло письмо. Помните: у вас будет как минимум столько локальных хостов в вашей сети, сколько у вас есть машин (всего, сумма виртуальных машин, контейнеров, чистый металл)

...