0


所以,我用 Java Mail 发送 ICal 邀请,我给他们每个人一个 Message-ID。现在,如果有人通过接受/拒绝回复,我会收到一封回复电子邮件,但消息 ID 不同。
似乎 Outlook 生成了新的 Message-ID 并丢弃了我在邀请中设置的每个标题,有没有办法将发送的邀请与他们的回复相匹配,或者相反?

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

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

4 回答 4

0

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

于 2013-10-11T15:21:52.777 回答
0

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

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

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

于 2013-10-15T11:23:42.963 回答
0

iCalendar UID 属性正是为此目的而定义的。见https://www.rfc-editor.org/rfc/rfc5545#section-3.8.4.7

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

于 2013-10-14T11:10:13.937 回答
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

于 2013-10-14T11:28:49.010 回答