当我使用默认的WildFly邮件会话从我的应用程序发送电子邮件时,自动生成的邮件ID会显示我的服务器是WildFly:
Message-ID: <524672585.11.1429091886393.JavaMail.wildfly@myserver.example.com>
出于安全原因,我想抑制或覆盖消息ID中的wildfly
子字符串。
是否有配置元素或系统属性来执行此操作?
答案 0 :(得分:0)
回答我自己的问题:消息ID的wildfly
部分对应于user.name
系统属性的值。我的服务器恰好在名为wildfly
的Linux用户帐户下运行。
因此,一种选择是使用其他用户帐户。或者,只需将-Duser.name=foo
传递给WildFly启动脚本即可更改消息ID。
答案 1 :(得分:0)
升级到JavaMail 1.5.3。该官方发布的Bug 6496 -Message-Id leaks current user/hostname of the Java process标记为已解决。
否则,Message-ID计算使用包含用户名的InternetAddress.getLocalAddress方法。您可以设置要覆盖的mail.from会话属性,包括O / S用户名。
SELECT a.id, b.a_id
FROM a
LEFT JOIN b ON a.id = b.a_id
将输出如下内容:
public static void main(String[] args) throws Exception {
Properties props = new Properties();
props.put("mail.from", "------@bar.baz");
Session s = Session.getInstance(props);
MimeMessage m = new MimeMessage(s);
m.addFrom(InternetAddress.parse("foo@bar.baz"));
m.setText("");
m.saveChanges();
m.writeTo(System.out);
}
如果您使用的是默认会话,则只需将“mail.from”添加到系统属性中即可。