Могу ли я отслеживать ответ по почте IMAP? - PullRequest
6 голосов
/ 28 августа 2009

Я работаю на IMAP-клиенте, используя Java-почту. В настоящее время у нас есть требование создать функцию «группировка по беседе», в которой пользователь может просматривать почту как беседу (см., Как 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 (независимо от сервера, с которого почта читается)?

Ответы [ 2 ]

9 голосов
/ 28 августа 2009

Если вы получаете необработанный источник сообщений, вы можете связывать сообщения друг с другом, просматривая следующие заголовки:

Message-ID: <097819EBC7F79F4A850C8F088D35927302442A82AA@xxxxxxxxxxxxxxxxxxx>
References: <4A8BE8F3.2060007@xxxxxxxxxxxxxx>
In-Reply-To: <4A8BE8F3.2060007@xxxxxxxxxxxxxxx>
1 голос
/ 28 августа 2009

Отслеживание только по темам

Большинство Outlook и других почтовых клиентов группируются только по темам, например, они удаляют FW: RE: и т. Д. С начала темы, сравнивают их без учета регистра и помечают их как одну и ту же группу. В основном при ответе / пересылке люди не меняют тему, и я сомневаюсь, что есть какой-то другой простой способ.

Другой способ сделать это (очень дорого), вы должны извлечь чистый текст из HTML-контента, а затем для тех же писем получателя / отправителя за последние пару дней, вы можете узнать, является ли старое письмо чистым текстовое содержимое существует в любом новом письме, а затем пометьте его как разговор.

getInReplyTo возвращает только идентификатор сообщения, вам придется вручную загружать каждое сообщение из каждой папки и находить правильный идентификатор сообщения, также вы должны преобразовать папку в IMAPFolder, вы это сделали?

...