JavaMail 以相同的方式发送电子邮件 thread/conversation
JavaMail Send emails in the same thread/conversation
我们的应用程序自动发送电子邮件,我需要将这些电子邮件分组到线程中,以便用户将它们组织在他们的邮箱中。这些电子邮件也可以有不同的主题。例如:
- 第 93 期已创建
- 第 93 期描述已更改
- 第 93 期受让人已更改
- 第 94 期已创建
- 第 94 期已关闭
我正在尝试将每封 child 电子邮件的 "In-Reply-To" header 设置为指向 parent 邮件 Message-ID。所以,每次创建新问题,发送第一封邮件时,我都会保存它 Message-ID。当要发送与该问题相关的新电子邮件时,我将添加一个 "In-Reply-To" header,指向已保存的 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 自定义消息看起来像这样:
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);
}
}
}
问题是电子邮件已发送,但未分组到线程中。我注意到如果他们有相同的主题,他们会被正确分组,但我需要每封电子邮件的不同主题。
对于不同的主题,这实际上可能吗?我需要使用不同的策略吗?
谢谢
这取决于正在使用的邮件 reader 使用的 "threading" 算法。作为消息的创建者,您无法完全控制它们的显示方式。
我们的应用程序自动发送电子邮件,我需要将这些电子邮件分组到线程中,以便用户将它们组织在他们的邮箱中。这些电子邮件也可以有不同的主题。例如:
- 第 93 期已创建
- 第 93 期描述已更改
- 第 93 期受让人已更改
- 第 94 期已创建
- 第 94 期已关闭
我正在尝试将每封 child 电子邮件的 "In-Reply-To" header 设置为指向 parent 邮件 Message-ID。所以,每次创建新问题,发送第一封邮件时,我都会保存它 Message-ID。当要发送与该问题相关的新电子邮件时,我将添加一个 "In-Reply-To" header,指向已保存的 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 自定义消息看起来像这样:
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);
}
}
}
问题是电子邮件已发送,但未分组到线程中。我注意到如果他们有相同的主题,他们会被正确分组,但我需要每封电子邮件的不同主题。
对于不同的主题,这实际上可能吗?我需要使用不同的策略吗?
谢谢
这取决于正在使用的邮件 reader 使用的 "threading" 算法。作为消息的创建者,您无法完全控制它们的显示方式。