กรองและจัดเรียงข้อความในกล่องเมล Exchange Server ด้วย EWS

กรองและจัดเรียงข้อความโดยใช้ EWS

นี้ IEWSClient อินเทอร์เฟซให้ ListMessages() เมธอดที่ดึงข้อความทั้งหมดจากกล่องเมล. เพื่อดึงเฉพาะข้อความที่ตรงกับเงื่อนไขบางอย่าง, ใช้เมธอดที่มีการโอเวอร์โหลด ListMessages() เมธอดที่รับค่า MailQuery คลาสเป็นอาร์กิวเมนต์ เมธอด MailQuery คลาสนี้ให้คุณสมบัติต่างๆ สำหรับระบุเงื่อนไข เช่น วันที่, หัวเรื่อง, ผู้ส่งและผู้รับ. นอกจากนี้ API ยังอนุญาตให้ใช้ตัวกรองความไวต่อขนาดตัวอักษรสำหรับดึงอีเมลจากกล่องจดหมาย.

กรองข้อความตามเกณฑ์

เพื่อดึงข้อความที่กรองจากกล่องจดหมาย:

  1. เชื่อมต่อกับเซิร์ฟเวอร์ Exchange.
  2. สร้างอินสแตนซ์ของ MailQuery และตั้งค่าคุณสมบัติตามต้องการ
  3. เรียกใช้ IEWSClient.ListMessages() เมธอดและส่งค่า MailQuery ในพารามิเตอร์เพื่อรับข้อความที่กรองเท่านั้น.

โค้ดตัวอย่างต่อไปนี้แสดงวิธีเชื่อมต่อกับกล่องเมล IMAP และรับข้อความที่มีสตริง "Newsletter" ในหัวเรื่องและส่งในวันนี้.

ตามวันที่วันนี้

โค้ดตัวอย่างต่อไปนี้แสดงวิธีกรองอีเมลทั้งหมดโดยอิงจากวันที่ของวันนี้.

ตามช่วงวันที่

โค้ดสแนปพัดด้านล่างแสดงวิธีกรองอีเมลทั้งหมดตามช่วงวันที่.

ตามผู้ส่ง

โค้ดสแนปพัดด้านล่างแสดงวิธีกรองอีเมลทั้งหมดตามผู้ส่งเฉพาะ.

ตามโดเมน

โค้ดสแนปพัดด้านล่างแสดงวิธีกรองอีเมลทั้งหมดตามโดเมนเฉพาะ.

ตามผู้รับ

โค้ดสแนปพัดด้านล่างแสดงวิธีกรองอีเมลทั้งหมดตามผู้รับเฉพาะ.

ตาม MessageID

โค้ดสแนปพัดด้านล่างแสดงวิธีกรองอีเมลทั้งหมดตาม MessageID.

ตามการแจ้งการส่งเมล

โค้ดสแนปพัดด้านล่างแสดงวิธีกรองอีเมลทั้งหมดตามการแจ้งเตือนการจัดส่งเมลทั้งหมด.

ตามขนาดข้อความ

การสร้างคิวรีซับซ้อน

หากแตกต่าง MailQueryBuilder คุณสมบัติตั้งค่าในคำสั่งแยกต่างหาก, ทุกเงื่อนไขจะตรงกัน. ตัวอย่างเช่น เพื่อรับข้อความในช่วงวันที่ระบุและจากโฮสต์เฉพาะ, เขียนสามคำสั่ง:

การรวมคิวรีด้วย AND

ส่วนของโค้ดต่อไปนี้แสดงวิธีรวมคิวรีด้วย AND.

การรวมคิวรีด้วย OR

MailQueryBuilder ให้ Or() เมธอดที่รับสอง MailQuery อินสแตนซ์เป็นพารามิเตอร์ มันดึงข้อความที่ตรงกับเงื่อนไขใดเงื่อนไขหนึ่งของสองเงื่อนไขที่ระบุ ตัวอย่างด้านล่างกรองข้อความที่หัวข้อมีคำว่า “test” หรือผู้ส่งเป็น “noreply@host.com” ตัวอย่างโค้ดต่อไปนี้จะแสดงวิธีรวมคิวรีด้วย OR.

การกรองอีเมลแบบแยกแยะตัวพิมพ์ใหญ่-เล็ก

อีเมลสามารถกรองโดยพิจารณาความแตกต่างของตัวพิมพ์โดยระบุแฟล็ก IgnoreCase ในเกณฑ์การกรองตามที่แสดงในส่วนของโค้ดต่อไปนี้.

กรองข้อความด้วยการสนับสนุนการแบ่งหน้า

จัดเรียงข้อความที่กรองแล้วในลำดับเพิ่มขึ้น/ลดลง

การกรองอีเมลสามารถรองรับการจัดเรียงข้อความในลำดับเพิ่มขึ้น/ลดลงได้ ในกรณีนี้, OrderBy เมธอดนี้ใช้เพื่อระบุลำดับที่ผลลัพธ์ของการค้นหาอีเมลจะถูกจัดเรียงโดยใช้คลาส MailQueryBuilder เมธอดนี้อนุญาตให้คุณกำหนดเกณฑ์การเรียงสำหรับคิวรีการค้นหาโดยระบุว่าผลลัพธ์ควรเรียงในลำดับเพิ่มขึ้นหรือลดลงตามคุณสมบัติเฉพาะ.

เมธอดนี้รับพารามิเตอร์ ascending ซึ่งระบุลำดับการเรียงสำหรับคุณสมบัติที่กำหนด หาก ascending เป็น true หมายความว่าผลลัพธ์การค้นหาควรเรียงในลำดับเพิ่มขึ้น ในทางกลับกัน หาก ascending เป็น false หมายความว่าผลลัพธ์การค้นหาควรเรียงในลำดับลดลง.

MailQueryBuilder builder = new MailQueryBuilder();
builder.Subject.Contains("Report");
builder.InternalDate.Since(new DateTime(2020, 1, 1));
builder.Subject.OrderBy(true); // sort the subject ascending
builder.InternalDate.OrderBy(false); // sort the date descending

MailQuery query = builder.GetQuery();

// Get list of messages
ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query, false);

ในโค้ดตัวอย่างด้านบน เมธอด OrderBy ถูกใช้สองครั้ง ครั้งแรกสำหรับหัวเรื่องและครั้งที่สองสำหรับวันที่ของอีเมล ผลลัพธ์จากการเรียกใช้เมธอด ListMessages ด้วยคำขอที่ส่งเข้าไป จะได้รายการข้อความที่หัวเรื่องมีคำว่า "Report" และได้รับในวันที่ระบุหรือหลังจากนั้น พร้อมกับผลลัพธ์ที่ถูกจัดเรียงตามหัวเรื่องในลำดับเพิ่มขึ้น ซึ่งหมายความว่าข้อความจะถูกจัดเรียงตามตัวอักษรจาก A ถึง Z ตามหัวเรื่อง นอกจากนี้ผลลัพธ์ยังถูกจัดเรียงตามวันที่ในลำดับลดลง ซึ่งหมายความว่าข้อความจะเรียงจากใหม่ไปเก่า.

กรองข้อความโดยใช้ AQS

ด้วย Aspose.Email สำหรับ .NET ผู้ใช้สามารถใช้ศักยภาพอันแข็งแกร่งของ Advanced Query Syntax (AQS) เพื่อกรองข้อความโดยตรงจากกล่องเมล Exchange AQS ให้วิธีการสร้างคิวรีที่มีความแข็งแรงและเข้าใจง่ายซึ่งสามารถกำหนดเป้าหมายอีเมลตามเกณฑ์เฉพาะ เช่น วันที่, ผู้ส่ง, และหัวเรื่อง เพื่อรับข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับการบูรณาการเข้าสู่กระบวนการกรองอีเมลของคุณและตัวอย่างโค้ดที่ครอบคลุมในการนำ AQS ไปใช้กับ Aspose.Email สำหรับ .NET โปรดไปดูที่ กรองข้อความด้วย AQS จากกล่องเมล Exchange บทความ.