6

我正在使用 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">&lt;
<a href="mailto:[censored]@[censored].com">
[censored]@[censored].com
</a>
&gt;
</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 这样的分组(无论从哪个服务器读取邮件)?

4

2 回答 2

9

如果您获得消息的原始来源,您可以通过查看以下标题将消息相互关联:

Message-ID: <097819EBC7F79F4A850C8F088D35927302442A82AA@xxxxxxxxxxxxxxxxxxx>
References: <4A8BE8F3.2060007@xxxxxxxxxxxxxx>
In-Reply-To: <4A8BE8F3.2060007@xxxxxxxxxxxxxxx>
于 2009-08-28T07:23:38.177 回答
1

仅按主题跟踪

大多数 Outlook 和其他电子邮件客户端仅按主题行分组,例如他们从主题的开头剥离 FW: RE: 等,并在不区分大小写的情况下比较它们,并将它们标记为同一组。主要是回复/转发的人不会改变主题,我怀疑还有其他最简单的方法。

另一种方法是(非常昂贵),您必须从html内容中提取纯文本,然后对于最近几天相同的收件人/发件人电子邮件,您可以找出是否存在旧电子邮件的纯文本内容在任何新电子邮件中,然后将它们标记为对话。

getInReplyTo 仅返回消息 ID,您必须手动从每个文件夹中加载每条消息并找到正确的消息 ID,而且您必须将文件夹转换为 IMAPFolder,您这样做了吗?

于 2009-08-28T07:39:36.587 回答