因此,我正在向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
提前感谢您的帮助!
答案 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来获取行,分割它并获取你设置的值。就是这样。