我使用SMTP邮件在smtp服务器上发送邮件,我的应用程序使用SMTP端口465.我的需要是,我必须在发送邮件之前设置Message-ID。我做了一些R & D,发现下面的代码。我不得不重写方法updateMessageID()
的MimeMessage
在发送邮件之前在邮件头中设置MessageId
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.MimeMessage;
public class CustomMimeMessage extends MimeMessage {
public CustomMimeMessage(Session session) {
super(session);
}
@Override
protected void updateMessageID() throws MessagingException {
setHeader("Message-ID", "message id");
}
}
然后,我曾在我的服务作出的CustomMimeMessage
一个实例,然后调用使用该实例updateMessageID()
方法,但我仍然可以通过Gmail中产生的消息ID。
这可能意味着,当邮件经过Gmail的服务器时,Gmail会修改标题将其转发到目的地之前。你不能使用其他标题吗? –
如果打开[JavaMail会话调试](http://www.oracle.com/technetwork/java/javamail/faq/index.html#debug),您是否看到正在发送的消息中正确的Message-ID标头?如果Gmail正在修改通过它传递的消息的消息ID,这将是非常糟糕的...... –