ดึงและแสดงรายการอีเมลจากเซิร์ฟเวอร์ IMAP

Contents
[ ]

การดึงและแสดงรายการข้อความ

วิธีรับข้อมูลการระบุของข้อความในกล่องจดหมาย

เมื่อดึงและประมวลผลข้อความอีเมล คุณสามารถรับข้อมูลการระบุอย่างละเอียด เช่น หมายเลขลำดับและ ID ที่ไม่ซ้ำได้โดยใช้คุณลักษณะต่อไปนี้ที่ให้โดยเวอร์ชันล่าสุดของ Aspose.Email สำหรับ .NET:

Aspose.Email.ImapMessageInfo คลาส: แสดงข้อมูลการระบุของข้อความในกล่องจดหมาย IMAP.

ImapMessageInfo.SequenceNumber คุณสมบัติ: ดึงหมายเลขลำดับของข้อความ

ImapMessageInfo.UniqueId คุณสมบัติ: ดึงตัวระบุที่ไม่ซ้ำของข้อความ

Aspose.Email.MailMessage.ItemId คุณสมบัติ: แสดงข้อมูลการระบุเพิ่มเติมของข้อความภายในกล่องจดหมาย

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีรับข้อมูลการระบุข้อความในกล่องจดหมาย IMAP:

  1. สร้างอินสแตนซ์ของ ImapClient คลาสโดยให้พารามิเตอร์ที่จำเป็นเช่น โฮสต์เซิร์ฟเวอร์ IMAP, พอร์ต, ที่อยู่อีเมล, รหัสผ่าน, และตัวเลือกความปลอดภัย
  2. ใช้ ListMessages วิธีการดึงรายการข้อความจากโฟลเดอร์ "INBOX" จำกัดรายการที่ 5 ข้อความแรกด้วยเมธอด Take(5)
  3. แยกหมายเลขลำดับของข้อความที่แสดงโดยใช้ SequenceNumber คุณสมบัติของแต่ละข้อความ.
  4. ใช้ FetchMessages วิธีการดึงรายละเอียดทั้งหมดของข้อความจากเซิร์ฟเวอร์โดยใช้หมายเลขลำดับที่ได้จากขั้นตอนก่อนหน้า
  5. วนลูปผ่านข้อความที่ดึงมาและสำหรับแต่ละข้อความ ให้ดึงและแสดงข้อมูลต่อไปนี้:
  • หมายเลขลำดับของข้อความ.
  • คุณสมบัติ ItemId.SequenceNumber
  • หัวเรื่องของข้อความ.
using (var client = new ImapClient(imapHost, port, emailAddress, password, securityOption))
{
    // List the first 5 messages from the inbox
    var msgs = client.ListMessages("INBOX").Take(5);
    
    // Get sequence numbers of the messages
    var seqIds = msgs.Select(t => t.SequenceNumber);
    
    // Fetch messages based on sequence numbers
    var msgsViaFetch = client.FetchMessages(seqIds);
    
    for (var i = 0; i < 5; i++)
    {
        var thisMsg = msgsViaFetch[i];
        Console.WriteLine($"Message ID: {seqIds.ElementAt(i)} SequenceNumber: {thisMsg.ItemId.SequenceNumber} Subject: {thisMsg.Subject}");
    }
}

แสดงรายการ ID ของข้อความ MIME จากเซิร์ฟเวอร์

ImapMessageInfo ให้บริการ MIME MessageId สำหรับการระบุข้อความโดยไม่ต้องดึงข้อความเต็ม โค้ดตัวอย่างต่อไปนี้แสดงวิธีแสดงรายการ MIME messageId

แสดงรายการข้อความจากเซิร์ฟเวอร์

Aspose.Email มีรูปแบบ overload 2 สมาชิกของ ListMessages() เพื่อดึงข้อความจำนวนที่ระบุตามคิวรี ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแสดงรายการข้อความ.

แสดงรายการข้อความแบบเรียกซ้ำ

โปรโตคอล IMAP รองรับการแสดงรายการข้อความแบบเรียงลำดับจากโฟลเดอร์กล่องจดหมาย ซึ่งช่วยให้แสดงข้อความจากโฟลเดอร์ย่อยของโฟลเดอร์ได้ด้วย โค้ดตัวอย่างต่อไปนี้แสดงวิธีแสดงรายการข้อความแบบเรียงลำดับ

แสดงรายการข้อความด้วย MultiConnection

ImapClient ให้การ UseMultiConnection คุณสมบัติที่สามารถใช้สร้างการเชื่อมต่อหลาย ๆ ครั้งสำหรับงานที่มีภาระหนัก. คุณยังสามารถตั้งค่าจำนวนการเชื่อมต่อที่จะใช้ในโหมดหลายการเชื่อมต่อโดยใช้ ImapClient.ConnectionsQuantity. โค้ดตัวอย่างต่อไปนี้แสดงการใช้โหมดหลายการเชื่อมต่อสำหรับการแสดงรายการข้อความและเปรียบเทียบประสิทธิภาพกับโหมดการเชื่อมต่อเดี่ยว

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

ในสถานการณ์ที่เซิร์ฟเวอร์อีเมลมีข้อความจำนวนมากในกล่องจดหมาย บ่อยครั้งที่ต้องการแสดงรายการหรือดึงข้อความโดยมีการสนับสนุนการแบ่งหน้า API ของ Aspose.Email ImapClient ทำให้คุณดึงข้อความจากเซิร์ฟเวอร์พร้อมการสนับสนุนการแบ่งหน้า.

แสดงรายการไฟล์แนบของข้อความ

เพื่อรับข้อมูลเกี่ยวกับไฟล์แนบ เช่น ชื่อ ขนาด โดยไม่ต้องดึงข้อมูลไฟล์แนบ ให้ลองใช้ API ด้านล่าง:

  • Aspose.Email.Clients.Imap.ImapAttachmentInfo - แสดงข้อมูลไฟล์แนบ
  • Aspose.Email.Clients.Imap.ImapAttachmentInfoCollection - แสดงชุดของ ImapAttachmentInfo คลาส.
  • Aspose.Email.Clients.Imap.ListAttachments(int sequenceNumber) - รับข้อมูลของแต่ละไฟล์แนบในข้อความ

ตัวอย่างโค้ดพร้อมขั้นตอนด้านล่างจะแสดงวิธีใช้ API:

  1. เรียกใช้ ListMessages() เมธอดบนอ็อบเจกต์ imapClient เมธอดนี้จะคืนค่า ImapMessageInfoCollection ที่มีข้อมูลเกี่ยวกับข้อความในกล่องจดหมาย
  2. ทำการวนซ้ำแต่ละข้อความใน messageInfoCollection ด้วยลูป foreach
  3. เรียกใช้ ListAttachments() เมธอดบนอ็อบเจกต์ imapClient โดยส่งคุณสมบัติ SequenceNumber ของอ็อบเจกต์ข้อความเป็นพารามิเตอร์ เมธอดนี้จะคืนค่า ImapAttachmentInfoCollection ที่มีข้อมูลเกี่ยวกับไฟล์แนบในข้อความ
  4. ทำการวนซ้ำแต่ละไฟล์แนบใน attachmentInfoCollection ด้วยลูป foreach
  5. ภายในลูปภายใน คุณสามารถเข้าถึงข้อมูลของแต่ละไฟล์แนบโดยใช้คุณสมบัติของอ็อบเจกต์ attachmentInfo
var messageInfoCollection = imapClient.ListMessages();
    
foreach (var message in messageInfoCollection)
{
    var attachmentInfoCollection = imapClient.ListAttachments(message.SequenceNumber);

    foreach (var attachmentInfo in attachmentInfoCollection)
    {
        Console.WriteLine("Attachment: {0} (size: {1})", attachmentInfo.Name, attachmentInfo.Size);
    }
}

ดึงและบันทึกข้อความ

ดึงข้อความจากเซิร์ฟเวอร์

นี้ ImapClient คลาสสามารถดึงข้อความจากเซิร์ฟเวอร์ IMAP และบันทึกข้อความในรูปแบบ EML ลงดิสก์ท้องถิ่น ขั้นตอนต่อไปนี้จำเป็นเพื่อนำข้อความบันทึกลงดิสก์:

  1. สร้างอินสแตนซ์ของ ImapClient คลาส.
  2. ระบุชื่อโฮสต์, พอร์ต, ชื่อผู้ใช้, และรหัสผ่านใน ImapClient คอนสตรัคเตอร์.
  3. เลือกโฟลเดอร์โดยใช้ SelectFolder() เมธอด.
  4. เรียกใช้ ListMessages เมธอดเพื่อดึง ImapMessageInfoCollection อ็อบเจ็กต์.
  5. วนซ้ำผ่าน ImapMessageInfoCollection คอลเล็กชัน เรียก SaveMessage() เมธอดและกำหนดเส้นทางเอาต์พุตและชื่อไฟล์.

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีดึงข้อความอีเมลจากเซิร์ฟเวอร์และบันทึกลง

ดึงข้อความในลำดับจากมากไปน้อย

Aspose.Email ให้บริการ ImapClient.ListMessagesByPage เมธอดที่แสดงรายการข้อความพร้อมการรองรับการแบ่งหน้า การโอเวอร์โหลดบางส่วนของ ImapClient.ListMessagesByPage รับ PageSettings เป็นพารามิเตอร์. PageSettings ให้การ AscendingSorting คุณสมบัติที่เมื่อกำหนดเป็น false จะคืนค่าอีเมลในลำดับ descending

โค้ดตัวอย่างต่อไปนี้สาธิตการใช้ของ AscendingSorting คุณสมบัติของ PageSettings คลาสเพื่อเปลี่ยนออเดอร์ของอีเมล.

บันทึกข้อความในรูปแบบ MSG

เพื่อบันทึกอีเมลในรูปแบบ MSG, ImapClient.FetchMessage() ต้องเรียกเมธอดนี้ มันจะคืนข้อความในอินสแตนซ์ของ MailMessage คลาส. เมธอด MailMessage.Save() เมธอดนั้นสามารถเรียกเพื่อบันทึกข้อความเป็นไฟล์ MSG ตัวอย่างโค้ดต่อไปนี้แสดงวิธีบันทึกข้อความในรูปแบบ MSG.

จัดกลุ่มข้อความที่ดึงมา

ImapClient ให้การ FetchMessages เมธอดที่รับ iterable ของลำดับหมายเลขหรือ Unique ID และคืนค่าเป็นรายการของ MailMessage. โค้ดสแนปต่อไปนี้แสดงการใช้ FetchMessages เมธอดเพื่อดึงข้อความตามลำดับหมายเลขและ ID ที่ไม่ซ้ำกัน.

ดึงโฟลเดอร์และอ่านข้อความแบบเรียกซ้ำ

ในบทความนี้ ส่วนใหญ่ของ ImapClient ฟีเจอร์เหล่านี้ใช้เพื่อสร้างแอปพลิเคชันที่แสดงรายการโฟลเดอร์และโฟลเดอร์ย่อยทั้งหมดโดยการเรียกซ้ำจากเซิร์ฟเวอร์ IMAP นอกจากนี้ยังบันทึกข้อความในแต่ละโฟลเดอร์และโฟลเดอร์ย่อยในรูปแบบ MSG บนดิสก์ท้องถิ่น บนดิสก์ โฟลเดอร์และข้อความจะถูกสร้างและบันทึกในโครงสร้างลำดับชั้นเดียวกับบนเซิร์ฟเวอร์ IMAP ตัวอย่างโค้ดต่อไปนี้จะแสดงวิธีดึงข้อมูลข้อความและโฟลเดอร์ย่อยแบบเรียกซ้ำ

จัดการข้อมูลพิเศษของข้อความ

ดึงพารามิเตอร์เพิ่มเติมเป็นข้อมูลสรุป

รับข้อมูลหัวข้อ List-Unsubscribe

หัวข้อ List-Unsubscribe มี URL สำหรับยกเลิกการสมัครรับรายชื่ออีเมล เช่น โฆษณา, จดหมายข่าว ฯลฯ เพื่อรับหัวข้อ List-Unsubscribe ให้ใช้ ListUnsubscribe คุณสมบัติของ ImapMessageInfo คลาส ตัวอย่างต่อไปนี้แสดงการใช้ของ ListUnsubscribe คุณสมบัติสำหรับรับหัวข้อ List-Unsubscribe.