Pertama-tama, ini adalah tugas yang sulit.
Anda harus mengumpulkan tanggapan umum dari klien email yang berbeda dan menyiapkan ekspresi reguler yang benar (atau apa pun) untuk menguraikannya. Saya telah mengumpulkan tanggapan dari outlook, thunderbird, gmail, apple mail dan mail.ru.
Saya menggunakan ekspresi reguler untuk mengurai respons dengan cara berikut: jika ekspresi tidak cocok, saya mencoba menggunakan yang berikutnya.
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)
Untuk menghapus kutipan pada akhirnya:
new Regex("^>.*$", RegexOptions.IgnoreCase | RegexOptions.Multiline);
Berikut adalah kumpulan kecil tanggapan pengujian saya (sampel dibagi dengan --- ):
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
Salam Hormat, Oleg Yaroshevych