【发布时间】:2013-03-19 03:31:30
【问题描述】:
我正在使用 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)
【问题讨论】:
标签: java smtp apache-commons apache-commons-net