首先,您好!
我即将使用 Javax.mail 在 Java 中开发自定义新闻通讯应用程序API。 所以我需要开发一种 Verp 技术来跟踪跳出。
到目前为止,我已经覆盖了javax.mail.internet.MimeMessage只是为了处理我自己的邮件 header 。
class CustomMailMessage extends MimeMessage
...
public void setCustomHeader(key, value)
{
setHeader(key, value);
updateHeaders();
}
...
所以这似乎适用于我设置的除 Return-Path 之外的任何 header 。
...
setCustomHeader("Return-Path",verpAddr);
...
导致 VERP 失败。我在调用之前和之后跟踪了此 header 的值
...
Transport.send(message);
...
看起来这个值和我设置的值是一样的。然而,在收到邮件时,返回路径会更改为发件人地址(发件人:)。与其他标题不同的是,它们是设置的。因此,退回通知将发送给发件人,而不是我的bounce+usermail=host@mydomain.com。
我认为此故障发生在 postfix 站点上。
请注意,服务器是由 Plesk 设置的,并且我的 domain.com 在我的服务器上共享。
所以我请任何可以帮助我的人。或者可以为我提供有关如何以不同方式实现 Verp 技术的更多信息。
提前致谢并干杯!
最佳答案
Return-Path header 由接收方而不是发送方设置。
您想要设置“信封发件人”地址。请参阅javadocs for the com.sun.mail.smtp package要设置的属性,请参阅 SMTPMessage类作为设置此信息的另一种方式。
另请注意,您不需要仅仅为了设置自定义 header 而子类化 MimeMessage。您可以直接调用setHeader方法,updateHeaders将在消息发送之前被调用。 (无论如何,updateHeaders 不会对这些自定义 header 执行任何操作。)
关于java - VERP 与 JavaMail 和 Postfix,如何操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9588875/