ดึงและแสดงรายการอีเมลจากเซิร์ฟเวอร์ IMAP
แสดงรายการข้อความจากกล่องจดหมาย
เมธอด ’list_messages’ ของ ImapClient คลาสดึงรายการของข้อความทั้งหมดจากโฟลเดอร์ที่เลือกในขณะนี้ (ในกรณีนี้คือ "Inbox") รายการนี้มีวัตถุเมตาดาต้าของข้อความซึ่งมักรวมถึงข้อมูลเช่น ID ของข้อความ, หมายเลขลำดับ, UID และอาจมีข้อมูลสรุปเช่นหัวเรื่องหรือข้อมูลผู้ส่ง
โค้ดสแน็ปด้านล่างแสดงวิธีดึงข้อมูลเมตาดาต้าของข้อความจากกล่องขาเข้าและพิมพ์จำนวนข้อความทั้งหมดที่มี:
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
client.select_folder("Inbox")
messages = client.list_messages()
print(f"Total Messages: {len(messages)}")
แสดงรายการข้อความด้วยการสนับสนุนการแบ่งหน้า
ในกรณีที่เซิร์ฟเวอร์อีเมลมีข้อความจำนวนมากในกล่องจดหมาย มักต้องการแสดงรายการหรือดึงข้อความโดยสนับสนุนการแบ่งหน้า Aspose.Email ImapClient คลาสที่ให้คุณดึงข้อความจากเซิร์ฟเวอร์ตามการสนับสนุนการแบ่งหน้า.
แสดงรายการข้อความแบบเรียกซ้ำ
โปรโตคอล IMAP อนุญาตให้แสดงรายการข้อความจากโฟลเดอร์กล่องจดหมายแบบเรียกซ้ำ ซึ่งทำให้สามารถแสดงรายการข้อความจากโฟลเดอร์ย่อยได้ด้วย โค้ดสแน็ปด้านล่างแสดงวิธีแสดงรายการข้อความแบบเรียกซ้ำ:
แสดงรายการ MIME Message IDs
นี้ ImapMessageInfo คลาสให้วิธีที่สะดวกในการเข้าถึง MIME MessageId เพื่อระบุตัวข้อความโดยไม่ต้องสกัดเนื้อหาข้อความทั้งหมด ด้านล่างเป็นโค้ดสแน็ปที่แสดงวิธีแสดงรายการ MIME MessageId:
แสดงรายการข้อความด้วย MultiConnection
นี้ ImapClient คลาสมีคุณสมบัติ use_multi_connection ที่ทำให้ใช้การเชื่อมต่อหลายครั้งสำหรับการดำเนินการที่มีโหลดสูง นอกจากนี้คุณสามารถระบุจำนวนการเชื่อมต่อในโหมดหลายการเชื่อมต่อโดยใช้คุณสมบัติ connections_quantity ตัวอย่างโค้ดต่อไปนี้แสดงวิธีใช้โหมดหลายการเชื่อมต่อสำหรับการแสดงรายการข้อความ:
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
client.select_folder("Inbox")
client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
message_info_col = client.list_messages(True)
โปรดทราบว่า การใช้โหมดนี้ไม่ได้จำเป็นต้องทำให้ประสิทธิภาพเพิ่มขึ้น
ดึงข้อความตามหมายเลขลำดับหรือ ID เฉพาะ
API ของ Aspose.Email อนุญาตให้คุณสร้างรายการข้อความสองรายการ หนึ่งที่มีหมายเลขลำดับและอีกหนึ่งที่มี ID เฉพาะของข้อความทั้งหมดในกล่องจดหมาย เพื่อดึงข้อความจากเซิร์ฟเวอร์ IMAP ตามตัวระบุ ให้ใช้เมธอด fetch_messages ของ ImapClient คลาส โค้ดสแน็ปด้านล่างแสดงวิธีแสดงรายการข้อความโดยใช้ตัวระบุ:
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
# List messages
message_info_col = client.list_messages()
print("ListMessages Count:", message_info_col.count)
# Get sequence numbers and unique IDs
sequence_number_ar = [mi.sequence_number for mi in message_info_col]
unique_id_ar = [mi.unique_id for mi in message_info_col]
# Fetch messages by sequence number
fetched_messages_by_snum = client.fetch_messages(sequence_number_ar)
print("FetchMessages-sequenceNumberAr Count:", len(fetched_messages_by_snum))
# Fetch messages by UID
fetched_messages_by_uid = client.fetch_messages(unique_id_ar)
print("FetchMessages-uniqueIdAr Count:", len(fetched_messages_by_uid))
ดึงข้อความในลำดับจากมากไปน้อย
งานนี้ทำได้โดยกำหนดการตั้งค่าการแบ่งหน้าสำหรับการดึงข้อความ เพื่อวัตถุประสงค์นี้ใช้คุณสมบัติ ascending_sorting ของ PageSettings คลาสที่เป็นส่วนหนึ่งของโมดูลไคลเอนต์ IMAP ตั้งแอต tribute ascending_sorting บน PageSettings ตั้งวัตถุเป็น False ซึ่งบ่งบอกว่าข้อความควรเรียงลำดับจากมากไปน้อยโดยค่าเริ่มต้นระหว่างการดึง โค้ดสแน็ปต่อไปนี้แสดงวิธีดึงข้อความในลำดับจากมากไปน้อย:
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
page_settings = ae.clients.imap.PageSettings
page_settings.ascending_sorting = False
page_info = client.list_messages_by_page(5, page_settings)
messages = page_info.items
for message in messages:
print(message.subject)
ดึงข้อความจากเซิร์ฟเวอร์และบันทึกลงดิสก์
นี้ ImapClient คลาสสามารถดึงข้อความจากเซิร์ฟเวอร์ IMAP และบันทึกเป็นรูปแบบ EML ลงบนดิสก์ท้องถิ่น ขั้นตอนต่อไปนี้จำเป็นเพื่อบันทึกข้อความลงดิสก์:
- ใช้ ImapClient คลาสพร้อมพารามิเตอร์ที่จำเป็น (host, port, username, password) เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ IMAP
- เลือกโฟลเดอร์ที่ต้องการโดยเรียกเมธอด select_folder (เช่น "Inbox")
- ดึงข้อความโดยวนผ่านด้วยเมธอด list_messages
- เพื่อบันทึกข้อความ สำหรับแต่ละข้อความ ให้ใช้เมธอด save_message ระบุไดเรกทอรีและเพิ่ม ID เฉพาะลงในชื่อไฟล์เพื่อความไม่ซ้ำกัน
โค้ดสแน็ปต่อไปนี้แสดงวิธีดึงข้อความอีเมลจากเซิร์ฟเวอร์และบันทึกไว้:
บันทึกข้อความในรูปแบบ MSG
เพื่อบันทึกอีเมลในรูปแบบ MSG ให้เรียกเมธอด fetch_message ของ ImapClient คลาส จะคืนค่าข้อความในอินสแตนซ์ของ MailMessage คลาส เมธอด MailMessage.save() สามารถเรียกเพื่อบันทึกข้อความเป็น MSG ตัวอย่างโค้ดต่อไปนี้แสดงวิธีบันทึกข้อความในรูปแบบ MSG.
ดึงพารามิเตอร์เพิ่มเติมของข้อความ (ข้อมูลสรุป)
โค้ดสแน็ปด้านล่างแสดงวิธีโต้ตอบกับเซิร์ฟเวอร์อีเมลโดยใช้ Aspose.Email ImapClient เพื่อส่งและจัดการข้อความอีเมล โค้ดใช้ UID ของข้อความเพื่อดึงข้อมูลสรุปพร้อมพารามิเตอร์พิเศษ ("X-GM-MSGID", "X-GM-THRID") ข้อมูลคล้ายกันดึงโดยใช้หมายเลขลำดับ
รับส่วนหัว List-Unsubscribe
ส่วนหัว "ListUnsubscribe" มักจะรวมอยู่ในส่วนหัวของข้อความอีเมลที่ส่งโดยรายการจดหมายหรือระบบอีเมลอัตโนมัติ มันให้ลิงก์หรือที่อยู่อีเมลที่ผู้รับสามารถใช้เพื่อยกเลิกการสมัครจากรายการจดหมายหรืออีเมลอัตโนมัติ Aspose.Email มีคุณสมบัติ ’list_unsubscribe’ ของ ImapMessageInfo คลาสเพื่อดึงส่วนหัวนี้ ตัวอย่างโค้ดด้านล่างแสดงการใช้คุณสมบัติและสามารถใช้เป็นส่วนหนึ่งของระบบเพื่ออัตโนมัติกระบวนการยกเลิกการสมัครรับอีเมลที่ไม่ต้องการ:
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
message_info_col = client.list_messages()
# Iterate through each message
for imap_message_info in message_info_col:
print("ListUnsubscribe Header:", imap_message_info.list_unsubscribe)
รับข้อมูลการระบุตัวข้อความ
เมื่อดึงและประมวลผลอีเมล คุณสามารถดึงรายละเอียดของข้อความโดยใช้หมายเลขลำดับของมัน.
คุณลักษณะต่อไปนี้ใช้ในการโต้ตอบกับกล่องจดหมาย IMAP:
-
Aspose.Email.ImapMessageInfo คลาส - แสดงข้อมูลการระบุตัวตนของข้อความในกล่องจดหมาย.
-
Aspose.Email.ImapMessageInfo.sequence_number คุณสมบัติ - ลำดับที่ของข้อความ.
-
Aspose.Email.ImapMessageInfo.unique_id คุณสมบัติ - ไอดีที่ไม่ซ้ำกันของข้อความ.
โค้ดสแน็ปด้านล่างแสดงวิธีรับข้อมูลการระบุตัวตนของข้อความ:
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
msg_infos = client.list_messages("INBOX")
for msg_info in msg_infos:
# fetch by sequence number
msg = client.fetch_message(msg_info.sequence_number)
# fetch by unique id
msg = client.fetch_message(msg_info.unique_id)
แสดงรายการไฟล์แนบจากอีเมล IMAP
เพื่อรับข้อมูลเกี่ยวกับไฟล์แนบเช่น ชื่อ, ขนาดโดยไม่ต้องดึงข้อมูลไฟล์แนบ ใช้แหล่งข้อมูลของไลบรารีต่อไปนี้:
-
ImapAttachmentInfo คลาส - แสดงข้อมูลไฟล์แนบ (ขนาด, ชื่อ, ประเภทสื่อ)
-
ImapAttachmentInfoCollection คลาส - แสดงคอลเลกชันของ ImapAttachmentInfo.
-
เมธอด list_attachments(sequence_number) ของ ImapClient คลาส - ได้รับอ็อบเจกต์ที่สามารถวนหรือคอลเลกชันของข้อมูลไฟล์แนบสำหรับข้อความ
ตัวอย่างโค้ดด้านล่างแสดงวิธีแสดงรายการไฟล์แนบสำหรับแต่ละอีเมลโดยใช้ Aspose.Email ImapClient:
# List messages
message_info_col = client.list_messages()
# Iterate through each message
for message_info in message_info_col:
print(f"Attachments for message with sequence number {message_info.sequence_number}:")
# List attachments for the current message
attachment_info_col = client.list_attachments(message_info.sequence_number)
# Iterate through each attachment
for attachment_info in attachment_info_col:
print(f"Attachment: {attachment_info.name} (size: {attachment_info.size})")