ก่อนอื่นนี่เป็นงานที่ยุ่งยาก
คุณควรรวบรวมคำตอบทั่วไปจากไคลเอนต์อีเมลต่างๆและเตรียมนิพจน์ทั่วไปที่ถูกต้อง (หรืออะไรก็ตาม) เพื่อแยกวิเคราะห์ ฉันได้รวบรวมคำตอบจาก outlook, thunderbird, gmail, apple mail และ mail.ru
ฉันใช้นิพจน์ทั่วไปเพื่อแยกวิเคราะห์การตอบสนองในลักษณะต่อไปนี้: หากนิพจน์ไม่ตรงกันฉันจะลองใช้นิพจน์ถัดไป
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)
ในการลบใบเสนอราคาในตอนท้าย:
new Regex("^>.*$", RegexOptions.IgnoreCase | RegexOptions.Multiline);
นี่คือชุดคำตอบการทดสอบขนาดเล็กของฉัน (ตัวอย่างหารด้วย--- ):
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
ขอแสดงความนับถือ Oleg Yaroshevych