Przede wszystkim jest to trudne zadanie.
Powinieneś zebrać typowe odpowiedzi od różnych klientów poczty e-mail i przygotować prawidłowe wyrażenia regularne (lub cokolwiek innego), aby je przeanalizować. Zebrałem odpowiedzi z programów Outlook, thunderbird, gmail, apple mail i mail.ru.
Używam wyrażeń regularnych do analizowania odpowiedzi w następujący sposób: jeśli wyrażenie nie zostało dopasowane, próbuję użyć następnego.
new Regex("From:\\s*" + Regex.Escape(_mail), RegexOptions.IgnoreCase)
new Regex("<" + Regex.Escape(_mail) + ">", RegexOptions.IgnoreCase)
new Regex(Regex.Escape(_mail) + "\\s+wrote:", RegexOptions.IgnoreCase)
new Regex("\\n.*On.*(\\r\\n)?wrote:\\r\\n", RegexOptions.IgnoreCase | RegexOptions.Multiline)
new Regex("-+original\\s+message-+\\s*$", RegexOptions.IgnoreCase)
new Regex("from:\\s*$", RegexOptions.IgnoreCase)
Aby na końcu usunąć cytat:
new Regex("^>.*$", RegexOptions.IgnoreCase | RegexOptions.Multiline);
Oto moja mała kolekcja odpowiedzi testowych (próbki podzielone przez --- ):
From: test@test.com [mailto:test@test.com]
Sent: Tuesday, January 13, 2009 1:27 PM
----
2008/12/26 <test@test.com>
> text
----
test@test.com wrote:
> text
----
test@test.com wrote: text
text
----
2009/1/13 <test@test.com>
> text
----
test@test.com wrote: text
text
----
2009/1/13 <test@test.com>
> text
> text
----
2009/1/13 <test@test.com>
> text
> text
----
test@test.com wrote:
> text
> text
<response here>
----
--- On Fri, 23/1/09, test@test.com <test@test.com> wrote:
> text
> text
Pozdrawiam Oleg Jaroszewycz