liferay - Liferay 邮件正在发送带有标题的主机名和用户信息
问题描述
我正在使用 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);
以下信息由上述代码发送:
收到:来自主机名([不可用]。[XXX.XXX.XXX])
和
消息 ID:<1567646772.21541142172709.JavaMail.user@hostname>
我得到了更改消息 ID 的方法,但我无法更改主机名(主机名到 localhost)。
我尝试通过添加手动指定其他 JavaMail 属性来覆盖上述配置或 portal-ext.propeties 来设置 mail.session.mail.smtp.localhost=localhost。但没有成功。请帮助将其设置为本地主机。
解决方案
我相信你说的是这样的邮件标题:
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 地址和反向查找主机名。如果您需要弄清楚邮件来自哪个“本地主机”,您只会使调试变得更加困难。请记住:您的网络中的 localhost 至少与您的机器数量一样多(总计,VM、容器、裸机的总和)
推荐阅读
- python-2.7 - 恢复 python 模块
- flutter - Flutter:导航离开时如何关闭 SnackBar?
- javascript - JavaScript 嵌套数组不能使用值?
- python - 在Python中将二元运算符重载为一元
- r - R MSM 包:Q 矩阵对于不同的协变量值是相同的,即使转换率不同
- c# - 在 PackageManagerConsole 中添加迁移时,EF Core IEntityTypeConfiguration 类中未命中断点
- reactjs - React useEffect Warning 警告:无法对未安装的组件执行 React 状态更新
- javascript - 如何使用 Date-fns 检查日期是否早于一天中的给定时间?
- javascript - 如何将数组中的所有参数相乘并返回乘积
- javascript - 从 gRPC 调用获得空响应