Her şeyden önce, bu zor bir görevdir.
Farklı e-posta istemcilerinden tipik yanıtlar toplamalı ve bunları ayrıştırmak için doğru normal ifadeler (veya her neyse) hazırlamalısınız. Outlook, thunderbird, gmail, apple mail ve mail.ru'dan yanıtlar topladım.
Yanıtı şu şekilde ayrıştırmak için normal ifadeler kullanıyorum: eğer ifade eşleşmezse, bir sonrakini kullanmaya çalışırım.
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)
Sonunda teklifi kaldırmak için:
new Regex("^>.*$", RegexOptions.IgnoreCase | RegexOptions.Multiline);
İşte benim küçük test yanıtları koleksiyonum (örneklerin --- ile bölünmesi ):
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
Saygılarımızla, Oleg Yaroshevych