Liferay邮件正在发送带有标题的主机名和用户信息

时间:2018-11-02 07:34:44

标签: liferay javamail liferay-6.2

我正在使用Liferay邮件(MailServiceUtil / MailEngine)将邮件发送给用户。我已经在ServerAdministration> Mail中配置了邮件。 我的代码如下:

    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);

以下信息是通过上述代码发送的:

  

已收到:来自主机名([UNAVAILABLE。[XXX.XXX.XXX])

  

消息ID:<1567646772.21541142172709.JavaMail.user@hostname>

我有更改消息ID的方法,但是我无法更改主机名(将主机名更改为localhost)。

我尝试通过添加手动指定其他JavaMail属性来覆盖以上配置或portal-ext.properties来设置mail.session.mail.smtp.localhost = localhost。但是没有成功。请帮助将此设置为本地主机。

2 个答案:

答案 0 :(得分:0)

我相信您说的是这样的邮件头:

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方面不受您的控制。

消息ID是唯一生成的,可以覆盖默认值(这就是您所得到的)。转发此邮件的系统协议由下一个系统构建,因此在原始系统上不可替代。

编辑(对您的评论有反应):

即使有一种方法可以使列表中的最后一台计算机标识为“ localhost”,这真的有什么用?下一跳将正确提供机器的IP地址和反向查找主机名。而且,如果您需要弄清楚邮件起源于哪个“本地主机”,则只会使调试更加困难。切记:网络中的本地主机数量至少与计算机数量一样(总共,虚拟机,容器,裸机之和)

答案 1 :(得分:0)

消息ID源自InternetAddress.getLocalAddress的结果,您可以通过设置mail.from属性来完全控制。