使用javamail设置标题顺序

时间:2017-07-19 10:44:21

标签: java javamail

我想设置我的mime消息的标题顺序。我已经尝试实现mimemessage和重写的writeTo方法。但是,我无法理解它是如何工作的。我发送了一条示例消息但最终收到了两次标题。任何人都可以帮助我明确这一点。下面是我的Message类。

public class MyMessage extends MimeMessage{
    private String subject;
    private String encodingtype;
    public MyMessage(Session session) {
        super(session);
        this.session=session;
    }
    @Override
    public void writeTo(OutputStream out) throws java.io.IOException, MessagingException{
        try{
            String replyto = ("\""+displayname+"\" <"+displayfrom+">");
            String fromheader = ("\""+displayname+"\" <"+mailfrom+">");
            out.write(("Date: "+new Date()+"\r\n").getBytes("UTF-8"));
            out.write(("From: "+fromheader+"\r\n").getBytes("UTF-8"));
            out.write(("Reply-To: "+replyto+"\r\n").getBytes("UTF-8"));
            out.write(("To: "+getAddress(email)+"\r\n").getBytes("UTF-8"));
            out.write(("Content-Type: text/html; charset=\"UTF-8\"\r\n").getBytes("UTF-8"));
            out.write(("Content-Transfer-Encoding: "+encodingtype+"\r\n").getBytes("UTF-8"));
            out.write("\r\n".getBytes("UTF-8"));
            out.write("<html><body><h1>HI</h1></body></html>\r\n".getBytes("UTF-8"));
        }catch(Exception e){
            System.out.println(e);
        }
    }
}

提前致谢。

2 个答案:

答案 0 :(得分:0)

嗯,为什么你需要控制标题顺序?

默认情况下,JavaMail会按照互联网RFC建议的顺序放置众所周知的标题。如果你有一些合理的理由将标题放在不同的顺序中,你可以继承MimeMessage并覆盖createInternetHeaders方法来提供你自己的InternetHeaders类的子类,它按照你想要的顺序放置标题。

或者您可以继承MimeMessage并只是覆盖writeTo方法以按照您想要的顺序获取和输出标题。您可能会发现查看MimeMessage source code

会很有帮助

答案 1 :(得分:0)

最后,我可以设置标题顺序。非常感谢Bill Shannon。谢谢您的帮助。以下是我的留言课。

{{1}}