2009-08-28 63 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,您是否這樣做?

相關問題