Java apache commons smtp更改/删除邮件Id标头

Java apache commons smtp更改/删除邮件Id标头,java,smtp,apache-commons,apache-commons-net,Java,Smtp,Apache Commons,Apache Commons Net,我正在使用apache commons smtp库使用我的gmail帐户发送电子邮件。一切正常,但消息Id标头已发送,我希望将其删除(而不是发送)。挖掘网络我在oracle文档中发现了一些东西: 然而,我不知道如何在ApacheCommons中实现这一点 这是我的密码: Email email = new SimpleEmail(); email.setHostName("smtp.googlemail.com"); email.setSmtpPort(465); email.setAuthen

我正在使用apache commons smtp库使用我的gmail帐户发送电子邮件。一切正常,但消息Id标头已发送,我希望将其删除(而不是发送)。挖掘网络我在oracle文档中发现了一些东西:

然而,我不知道如何在ApacheCommons中实现这一点

这是我的密码:

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

可能的问题是“Email”调用底层
MimeMessage
来提交头,这将调用
updateHeaders()
方法,该方法依次调用
updateMessageID()
,后者将插入消息ID头


为什么不尝试只使用java.mailapi发送电子邮件,因为您可以控制mimessage?代码甚至是

Email类有一个工厂方法来创建定制的mimessage,它可以由派生类实现,例如设置消息id

您可以扩展此方法以设置消息id。下一个代码将创建一个带有自定义消息id的htmlEmail消息

HtmlEmail email = new HtmlEmail()
                    {
                        protected MimeMessage createMimeMessage(Session aSession)
                        {
                            return new MimeMessage(aSession)
                                    {
                                        protected void updateHeaders () throws MessagingException
                                        {                     
                                            super.updateHeaders ();
                                            super.setHeader ("Message-ID", "my-message-id");
                                        }
                                    };
                        }
                    };
HtmlEmail email = new HtmlEmail()
                    {
                        protected MimeMessage createMimeMessage(Session aSession)
                        {
                            return new MimeMessage(aSession)
                                    {
                                        protected void updateHeaders () throws MessagingException
                                        {                     
                                            super.updateHeaders ();
                                            super.setHeader ("Message-ID", "my-message-id");
                                        }
                                    };
                        }
                    };