我正在使用Apache Commons SMTP库通过我的Gmail帐户发送电子邮件。一切正常,但是Message-Id标头被发送了出去,我想要删除它(不发送它)。在网上搜索时,我在Oracle文档中找到了一些信息:http://www.oracle.com/technetwork/java/faq-135477.html#msgid。
class MyMessage extends MimeMessage {
...
protected void updateMessageID() throws MessagingException {
setHeader("Message-ID", "my-message-id");
}
...
}
然而我不知道如何在apache commons中实现这一点。
以下是我的代码:
Email email = new SimpleEmail();
email.setHostName("smtp.googlemail.com");
email.setSmtpPort(465);
email.setAuthenticator(new DefaultAuthenticator("username", "password"));
email.setSSLOnConnect(true);
email.setFrom("user@gmail.com");
email.setSubject("TestMail");
email.setMsg("This is a test mail ... :-)");
email.addTo("foo@bar.com");
email.send();
基本上我需要像 email.setMimeMessage(...)
这样的东西,但没有这样的方法,只有 email.getMimeMessage()
更新 - 找到解决方案
public class MyEmail extends SimpleEmail{
protected MimeMessage createMimeMessage(Session aSession)
{
return new MyMessage(aSession);
}
}
您只需要覆盖createMimeMessage
方法,并确保它返回您自己的MimeMessage
实现(在这种情况下为MyMessage
)。