2009-08-28 62 views
6

我正在使用java邮件的IMAP客户端上工作。我们目前有要求创建一个“按会话分组”功能,用户可以将邮件视为对话(请参阅gmail组邮件是如何回复和转发的)我可以跟踪IMAP邮件回复吗?

我能够从服务器检索邮件,但是我收到的邮件部分, 回复邮件与实际邮件“融合”并被视为与实际邮件内容一样。

如:初始邮件:

<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这样的分组(不管从哪里读取邮件的服务器)?

+1

请参阅http://www.jwz.org/doc/threading.html了解适用的算法和一些统计信息。 – 2009-09-09 10:00:14

回答

8

如果你得到的消息的原始来源,你可以通过查看下面的标题相关的信息彼此:

Message-ID: <[email protected]> 
References: <[email protected]> 
In-Reply-To: <[email protected]> 
+1

我在我的Gmail邮箱中查看同样的东西;我认为这是它的工作方式,因为“有时”会话被打破了。 这绝对是我用于此目的的方式。 – Aif 2009-08-28 07:25:35

+0

这是不正确的,因为只有特定的邮件客户端将In-Reply-To并非全部,唯一最好的方法就是执行字符串遏制条件。 – 2009-08-28 07:36:02

+0

IMAPMessage类的确有getInReplyTo()方法 http://www.j2ee.me/products/javamail/javadocs/com/sun/mail/imap/IMAPMessage.html#getInReplyTo() 鉴于我有IMAPFolder对象,我如何从中检索IMAPMessage对象? this: IMAPMessage [] messages =(IMAPMessage [])userFolder.getMessages(); 这样做: 得到了例外:[Ljavax.mail.Message; java.lang.ClassCastException:[Ljavax.mail.Message; – 2009-08-28 07:42:18

1

轨道通过主题只有

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

另一种方法是(非常昂贵),您必须从HTML内容中提取纯文本,然后在过去几天内为相同的收件人/发件人电子邮件发送电子邮件,纯文本内容存在于任何新电子邮件中,然后将其标记为对话。

getInReplyTo仅返回消息ID,您将不得不手动加载每个文件夹中的每条消息并找到正确的消息ID,同时您必须将文件夹转换为IMAPFolder,您是否这样做?

相关问题