Primero que nada, esta es una tarea complicada.
Debe recopilar respuestas típicas de diferentes clientes de correo electrónico y preparar expresiones regulares correctas (o lo que sea) para analizarlas. He recopilado respuestas de outlook, thunderbird, gmail, apple mail y mail.ru.
Estoy usando expresiones regulares para analizar la respuesta de la siguiente manera: si la expresión no coincide, trato de usar la siguiente.
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)
Para eliminar la cotización al final:
new Regex("^>.*$", RegexOptions.IgnoreCase | RegexOptions.Multiline);
Aquí está mi pequeña colección de respuestas de prueba (muestras divididas por --- ):
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
Saludos cordiales, Oleg Yaroshevych