กรองอีเมลจากเมลเซิร์ฟเวอร์
กรองข้อความตามผู้ส่ง ผู้รับ หรือวันที่
นี้ Pop3Client คลาส, อธิบายใน Connect to POP3 Server, ให้ ListMessages() เมธอดที่ดึงข้อความทั้งหมดจากกล่องจดหมาย เพื่อดึงเฉพาะข้อความที่ตรงกับเงื่อนไขบางอย่าง ให้ใช้เมธอดโอเวอร์โหลด ListMessages() เมธอดที่รับ MailQuery เป็นอาร์กิวเมนต์. MailQuery คลาสให้คุณสมบัติต่าง ๆ สำหรับระบุตำแหน่งเงื่อนไขการค้นหา เช่น วันที่, หัวเรื่อง, ผู้ส่ง, ผู้รับ เป็นต้น MailQueryBuilder คลาสใช้สร้างนิพจน์การค้นหา ก่อนอื่นตั้งค่าเงื่อนไขและข้อจำกัดทั้งหมดแล้วจากนั้น MailQuery ถูกเติมด้วยคิวรีที่พัฒนาโดย MailQueryBuilder. ส่วน MailQuery อ็อบเจกต์คลาสใช้โดย Pop3Client เพื่อดึงข้อมูลที่กรองจากเซิร์ฟเวอร์ บทความนี้แสดงวิธีกรองข้อความอีเมลจากกล่องจดหมาย ตัวอย่างแรกอธิบายการกรองข้อความตามวันที่และหัวเรื่อง เราแสดงวิธีกรองตามเงื่อนไขอื่น ๆ และวิธีสร้างคิวรีที่ซับซ้อนยิ่งขึ้น นอกจากนี้ยังแสดงการใช้ตัวกรองวันที่และเวลาเพื่อดึงอีเมลที่ต้องการจากกล่องจดหมาย และยังแสดงวิธีใช้การกรองที่คำนึงถึงตัวพิมพ์ใหญ่‑เล็ก
กรองข้อความจากกล่องจดหมาย
เพื่อกรองข้อความจากกล่องจดหมาย:
- เชื่อมต่อกับเซิร์ฟเวอร์ POP3.
- สร้างอินสแตนซ์ของ MailQuery และตั้งค่าคุณสมบัติตามต้องการ
- เรียกใช้ Pop3Client.ListMessages(MailQuery query) เมธอดและส่งค่า MailQuery ในพารามิเตอร์เพื่อดึงเฉพาะข้อความที่กรองได้
โค้ดสแนปต่อไปนี้แสดงวิธีเชื่อมต่อกับกล่องจดหมาย POP3 และดึงข้อความที่มาถึงวันนี้และมีคำว่า "newsletter" ในหัวเรื่อง
// Connect and log in to POP3
const string host = "host";
const int port = 110;
const string username = "user@host.com";
const string password = "password";
Pop3Client client = new Pop3Client(host, port, username, password);
// Set conditions, Subject contains "Newsletter", Emails that arrived today
MailQueryBuilder builder = new MailQueryBuilder();
builder.Subject.Contains("Newsletter");
builder.InternalDate.On(DateTime.Now);
// Build the query and Get list of messages
MailQuery query = builder.GetQuery();
Pop3MessageInfoCollection messages = client.ListMessages(query);
Console.WriteLine("Pop3: " + messages.Count + " message(s) found.");
ดึงข้อความตามเงื่อนไขเฉพาะ
ตัวอย่างโค้ดด้านบน แสดงวิธีที่คุณสามารถกรองข้อความตามหัวเรื่องอีเมลและวันที่ เราสามารถใช้คุณสมบัติอื่นเพื่อกำหนดเงื่อนไขที่สนับสนุนอื่น ๆ ได้เช่นกัน ตัวอย่างต่อไปนี้เป็นการตั้งค่าเงื่อนไขโดยใช้ MailQuery.
โค้ดสแนปต่อไปนี้แสดงวิธีกรองอีเมลตามเกณฑ์อื่น:
- ค้นหาอีเมลที่ส่งวันนี้
- ค้นหาอีเมลที่ได้รับภายในช่วง
- ค้นหาอีเมลจากผู้ส่งเฉพาะ
- ค้นหาอีเมลที่ส่งมาจากโดเมนเฉพาะ
- ค้นหาอีเมลที่ส่งถึงผู้รับเฉพาะ
วันที่วันนี้
โค้ดสแนปต่อไปนี้แสดงวิธีค้นหาอีเมลที่ส่งวันนี้
// Emails that arrived today
MailQueryBuilder builder = new MailQueryBuilder();
builder.InternalDate.On(DateTime.Now);
ช่วงวันที่
โค้ดสแนปต่อไปนี้แสดงวิธีค้นหาอีเมลที่ได้รับภายในช่วงหนึ่ง
// Emails that arrived in last 7 days
builder.InternalDate.Before(DateTime.Now);
builder.InternalDate.Since(DateTime.Now.AddDays(-7));
ผู้ส่งเฉพาะ
โค้ดสแนปต่อไปนี้แสดงวิธีค้นหาอีเมลจากผู้ส่งเฉพาะ
// Get emails from specific sender
builder.From.Contains("saqib.razzaq@127.0.0.1");
โดเมนเฉพาะ
โค้ดสแนปต่อไปนี้แสดงวิธีค้นหาอีเมลที่ส่งมาจากโดเมนเฉพาะ
// Get emails from specific domain
builder.From.Contains("SpecificHost.com");
ผู้รับเฉพาะ
โค้ดสแนปต่อไปนี้แสดงวิธีค้นหาอีเมลที่ส่งถึงผู้รับเฉพาะ
// Get emails sent to specific recipient
builder.To.Contains("recipient");
สร้างคิวรีที่ซับซ้อน
หากแตกต่าง MailQueryBuilder คุณสมบัติตั้งค่าในคำสั่งแยกกัน จากนั้นเงื่อนไขทั้งหมดจะตรงกัน ตัวอย่างเช่น หากเราต้องการดึงข้อความระหว่างช่วงวันที่และจากโฮสต์เฉพาะ เราต้องเขียนสามคำสั่ง
รวมคิวรีด้วย AND
โค้ดสแนปต่อไปนี้แสดงวิธีรวมคิวรีด้วย AND
// Emails from specific host, get all emails that arrived before today and all emails that arrived since 7 days ago
builder.From.Contains("SpecificHost.com");
builder.InternalDate.Before(DateTime.Now);
builder.InternalDate.Since(DateTime.Now.AddDays(-7));
รวมคิวรีด้วย OR
MailQueryBuilder ให้ Or() เมธอดที่รับสอง MailQuery อินสแตนซ์เป็นพารามิเตอร์ มันจะดึงข้อความที่ตรงกับเงื่อนไขใดเงื่อนไขหนึ่งจากสองเงื่อนไขที่ระบุ ตัวอย่างโค้ดต่อไปนี้แสดงวิธีกรองข้อความที่มีคำว่า “test” ในหัวเรื่อง หรือผู้ส่งเป็น "noreply@host.com" ตัวอย่างโค้ดต่อไปนี้แสดงวิธีรวมคิวรีด้วย OR
// Specify OR condition
builder.Or(builder.Subject.Contains("test"), builder.From.Contains("noreply@host.com"));
ตัวกรองที่คำนึงถึงตัวพิมพ์ใหญ่‑เล็ก
API ยังให้ความสามารถในการกรองอีเมลจากกล่องจดหมายตามเงื่อนไขที่คำนึงถึงตัวพิมพ์ใหญ่-เล็ก วิธีต่อไปนี้ให้ความสามารถในการค้นหาอีเมลโดยระบุแฟล็กคำนึงถึงตัวพิมพ์ใหญ่-เล็ก
- Method Aspose.Email.StringComparisonField.Contains(string value, bool ignoreCase)
- Method Aspose.Email.StringComparisonField.Equals(string value, bool ignoreCase)
- Method Aspose.Email.StringComparisonField.NotContains(string value, bool ignoreCase)
- Method Aspose.Email.StringComparisonField.NotEquals(string value, bool ignoreCase)
// IgnoreCase is True
MailQueryBuilder builder1 = new MailQueryBuilder();
builder1.From.Contains("tesT", true);
MailQuery query1 = builder1.GetQuery();
Pop3MessageInfoCollection messageInfoCol1 = client.ListMessages(query1);