apache commons smtp ライブラリを使用して、gmail アカウントを使用してメールを送信しています。すべて正常に動作しますが、Message-Id ヘッダーが送信されており、それを削除しようとしています (送信されていません)。ネットを掘り下げると、オラクルのドキュメントで何かが見つかりました: 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