【问题标题】:Can i track an IMAP mail reply?我可以跟踪 IMAP 邮件回复吗?
【发布时间】:2010-11-23 15:35:24
【问题描述】:

我正在使用 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 这样的分组(无论从哪个服务器读取邮件)?

【问题讨论】:

标签: java gmail imap email


【解决方案1】:

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

Message-ID: <097819EBC7F79F4A850C8F088D35927302442A82AA@xxxxxxxxxxxxxxxxxxx>
References: <4A8BE8F3.2060007@xxxxxxxxxxxxxx>
In-Reply-To: <4A8BE8F3.2060007@xxxxxxxxxxxxxxx>

【讨论】:

  • 我在我的 gmail 邮箱里看到了同样的东西;我认为这是它的工作方式,因为“有时”对话被打破了。这绝对是我将用于此目的的方式。
  • 这是不正确的,因为只有某些邮件客户端将 In-Reply-To 不是全部,唯一最好的方法是执行字符串包含条件。
  • IMAPMessage 类确实有 getInReplyTo() 方法j2ee.me/products/javamail/javadocs/com/sun/mail/imap/… 鉴于我有 IMAPFolder 对象,我如何从中检索 IMAPMessage 对象?这个:IMAPMessage[] 消息 = (IMAPMessage[])userFolder.getMessages();这样做:得到异常:[Ljavax.mail.Message; java.lang.ClassCastException: [Ljavax.mail.Message;
  • 没关系,我可以得到标题,这就是我在 getInReplyTo() 中得到的: 这甚至不像回复邮件的电子邮件 ID ,我在这里错过了什么吗?
  • 这是消息 ID,您需要执行 message.getHeader("Message-ID") 来获取所有消息并比较标头值。
【解决方案2】:

仅按主题跟踪

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

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

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

【讨论】:

  • 对于作业,这个解决方案是可以的。但是对于生产应用程序和更好的用户体验,需要将电子邮件列为对话。否则,邮件客户端将无用。
猜你喜欢
  • 2014-01-22
  • 2012-08-14
  • 2016-01-31
  • 1970-01-01
  • 2011-06-02
  • 2010-09-17
  • 2021-07-23
  • 2012-03-23
  • 1970-01-01
相关资源
最近更新 更多