我正在使用java邮件处理IMAP客户端。我们目前要求创建“按对话分组”功能,用户可以将邮件视为对话(请参阅回复和转发的gmail群组邮件)
我可以从服务器检索邮件,但在收到的邮件中, 回复的邮件与实际邮件“融合”,并被视为实际邮件内容。
例如:初始邮件:
<div>This is the initial mail.</div>
回复邮件:
This is the response Mail<br><br>
<div class="gmail_quote">
On Wed, Aug 26, 2009 at 4:26 PM, [censored]
<span dir="ltr"><
<a href="mailto:[censored]@[censored].com">
[censored]@[censored].com
</a>
>
</span> wrote:<br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<div>This is the initial mail.</div>
<div></div>
</blockquote>
</div>
<br>
如上图所示,没有迹象显示实际内容和回复邮件的内容,如何提供类似gmail的分组(无论从哪里读取邮件的服务器)?
答案 0 :(得分:9)
如果您获得了消息的原始来源,您可以通过查看以下标题将消息相互关联:
Message-ID: <097819EBC7F79F4A850C8F088D35927302442A82AA@xxxxxxxxxxxxxxxxxxx>
References: <4A8BE8F3.2060007@xxxxxxxxxxxxxx>
In-Reply-To: <4A8BE8F3.2060007@xxxxxxxxxxxxxxx>
答案 1 :(得分:1)
仅按主题划分
大多数Outlook和其他电子邮件客户端仅按主题行分组,例如,它们从主题开头删除FW:RE:等,并将它们与区分大小写进行比较,并将它们标记为同一组。大多数人在回复/转发时不会改变主题,我怀疑还有其他最简单的方法。
执行此操作的另一种方法是(非常昂贵),您必须从html内容中提取纯文本,然后在过去几天内针对相同的收件人/发件人电子邮件,您可以查看旧邮件是否纯粹文本内容存在于任何新电子邮件中,然后将其标记为对话。
getInReplyTo只返回消息ID,你必须手动加载每个文件夹中的每条消息并找到正确的消息ID,你也必须将你的文件夹转换为IMAPFolder,你做到了吗?