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コンテンツから純粋なテキストを抽出する必要があります。その後、過去2日間の同じ受信者/送信者の電子メールについて、古い電子メールの純粋なテキストコンテンツが存在するかどうかを確認できます。新しいメールで、会話としてマークします。

getInReplyToはメッセージIDのみを返します。各フォルダーから各メッセージを手動でロードし、正しいメッセージIDを見つける必要があります。また、フォルダーをIMAPFolderにキャストする必要があります。

于 2009-08-28T07:39:36.587 に答える