我正在使用 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
)