Trước hết, đây là một nhiệm vụ khó khăn.
Bạn nên thu thập các phản hồi điển hình từ các ứng dụng e-mail khác nhau và chuẩn bị các cụm từ thông dụng chính xác (hoặc bất cứ thứ gì) để phân tích cú pháp. Tôi đã thu thập các phản hồi từ outlook, sấm sét, gmail, apple mail và mail.ru.
Tôi đang sử dụng biểu thức chính quy để phân tích cú pháp phản hồi theo cách sau: nếu biểu thức không khớp, tôi cố gắng sử dụng biểu thức tiếp theo.
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)
Để loại bỏ báo giá cuối cùng:
new Regex("^>.*$", RegexOptions.IgnoreCase | RegexOptions.Multiline);
Đây là bộ sưu tập nhỏ của tôi về các phản hồi thử nghiệm (các mẫu được chia cho --- ):
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
Trân trọng, Oleg Yaroshevych