JavaMail在同一个帖子/对话中发送电子邮件

时间:2016-03-27 11:00:50

标签: java email javamail

我们的应用程序会自动发送电子邮件,我需要将这些电子邮件分组到线程中,以便用户将它们组织在邮箱中。这些电子邮件也可能有不同的主题。例如:

  • 创建了第93期
    • 问题93描述已更改
    • 第93号受让人已更改
  • 创建了第94期
    • 问题94已关闭

我正在尝试将每封子邮件的“In-Reply-To”标头设置为指向父邮件Message-ID。因此,每次创建新问题并发送第一封邮件时,我都会保存其Message-ID。当要发送与该问题相关的新电子邮件时,我将添加一个“In-Reply-To”标题,指向已保存的Message-ID。

我的代码如下所示:

        Message message = new CustomMessage(session, parentMessageId);
        message.setFrom(new InternetAddress("from@mycompany.com"));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("to@customer.com"));
        message.setSubject("Issue " + id + " " + actionPerformed);
        message.setText(content);
        message.saveChanges();
        Transport.send(message);

Class CustomMessage看起来像这样:

public class CustomMessage extends MimeMessage {

    private String inReplyTo;

    public CustomMessage(Session session, String inReplyTo) {
        super(session);
        this.inReplyTo = inReplyTo;
    }

    @Override
    public void saveChanges() throws MessagingException {
        if (inReplyTo != null) {
            // This messageID is something like "<51228289.0.1459073465571.JavaMail.admin@mycompany.com>" including <>
            setHeader("In-Reply-To", inReplyTo); 
        }
    }

}

问题是电子邮件已发送,但未在线程中分组。我注意到如果他们有相同的主题他们被正确分组,但我需要为每封电子邮件提供不同的主题。

对于不同的科目,这实际上是否可行?我需要使用不同的策略吗?

由于

1 个答案:

答案 0 :(得分:1)

这取决于使用哪种邮件阅读器所使用的“线程”算法。作为消息的创建者,您无法完全控制它们的显示方式。