如何将回复的电子邮件与发送的邀请相匹配?(Java Mail)

时间:2013-10-11 14:00:31

标签: java email javamail outlook-2007 icalendar

因此,我正在向Java Mail发送ICal邀请函,我给每个人发送了一个消息ID。 现在,如果有人通过接受/拒绝回复,我会收到回复电子邮件,但邮件ID不同。
看来Outlook会生成新的Message-ID,并抛弃我在邀请中设置的每个标题,有没有办法将发送的邀请与其回复相匹配或反过来?

以下是我查看邀请的互联网标题时显示的内容:

Return-Path: 
X-Original-To: 
Delivered-To:
Received: from
by 
for   ; Tue, 15 Oct 2013 09:52:39 +0200 (CEST)
From:
To:
Message-ID: 11111111111111111111111111
Subject: TestMail 
MIME-Version: 1.0
Content-Type: multipart/alternative; 
boundary="----=_Part_0_694990101.1381823559402"
UID:  114442
ContentID: blabla

以下是回复标题的内容:

Return-Path: 
X-Original-To: 
Delivered-To: 
Received: from 
for   ; Tue, 15 Oct 2013 09:52:44 +0200 (CEST)
From: 
To: 
Subject: Accepted: TestMail 11.10
Date: Tue, 15 Oct 2013 09:52:44 +0200
Message-ID: <000301cec97b$8866c540$99344fc0$@do@me.com>
MIME-Version: 1.0
Content-Type: text/calendar; method=REPLY;
charset="utf-8"
Content-Transfer-Encoding: 7bit
X-Mailer: Microsoft Office Outlook 12.0
Thread-Index: Ac7Je4UCPB4Lb2ZERnCPQEx3IbfpbQAAAEBQAAAAkSA=
Content-Language: de


提前感谢您的帮助!

4 个答案:

答案 0 :(得分:0)

如果回复包含原始主题,您可以在主题标题中添加内容。您还可以考虑为每个邀请生成唯一的回复地址。可能会有一个唯一的标识符,您可以将其添加到邀请中,该标识符将包含在响应中。

答案 1 :(得分:0)

iCalendar UID属性是为此目的而定义的。见http://tools.ietf.org/html/rfc5545#section-3.8.4.7

每个回复都应包含与原始请求中的值匹配的UID属性(在VEVENT组件内)。您不应该依赖传输机制(iMIP,但可以iSchedule)来进行匹配。

答案 2 :(得分:0)

当我使用Amazon SES作为我的SMTP服务器时,我遇到了类似的问题,它过度使用我的Javamail Message-ID并将其替换为自己的。一个简单而简单的解决方案是在参考头中发送一个随机生成的UID(参考头通常不会被大多数电子邮件服务提供商覆盖): -

像这样:email.setHeader("References", reference); 其中引用标题如下:reference = UUID.randomUUID().toString()+"@email.abcd.com"

有关参考标题的更多详细信息,请参阅:http://cr.yp.to/immhf/thread.html

答案 3 :(得分:0)

我明白了!我需要阅读回复的正文而不是标题。我设置的所有东西都存储在体内。 要获取正文的内容,您必须获取inputStream,如下所示:

Folder folder = store.getFolder("Inbox");
folder.open(Folder.READ_WRITE);
Message message[] = folder.getMessages();
InputStream in = messages.getInputStream();

然后你只需编写一个典型的IO Reader来获取行,分割它并获取你设置的值。就是这样。