การดึงอีเมลจากเซิร์ฟเวอร์ POP3

บันทึกอีเมลลงดิสก์โดยไม่ทำการแปลง

เพื่อดาวน์โหลดข้อความอีเมลจากเซิร์ฟเวอร์ POP3 โดยไม่ทำการแปลง คุณสามารถใช้ save_message เมธอดของ Aspose.Email Pop3Client คลาส ตัวอย่างโค้ดต่อไปนี้แสดงวิธีบันทึกข้อความโดยใช้หมายเลขลำดับ ในกรณีนี้คือหมายเลข 1. The save_message เมธอดเก็บรูปแบบ EML ดั้งเดิมโดยไม่ทำการแปลง:

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

คุณสามารถดึงข้อความอีเมลเฉพาะโดยใช้ fetch_message เมธอดของ Pop3Client คลาส ระบุหมายเลขลำดับที่ต้องการสำหรับอ็อบเจกต์ไคลเอนท์ ตัวอย่างโค้ดต่อไปนี้แสดงวิธีดึงข้อความเฉพาะและบันทึกโดยใช้หัวเรื่องเป็นชื่อไฟล์โดยเรียก save เมธอดบนอ็อบเจกต์ msg:

import aspose.email as ae

client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)

# Fetch the message by its sequence number and Save the message using its subject as the file name
msg = client.fetch_message(1)
msg.save("first-message_out.eml", ae.SaveOptions.default_eml)

กรองอีเมลจากเซิร์ฟเวอร์ตามเกณฑ์

Aspose.Email Pop3Client class ให้ list_messages() เมธอดที่ดึงข้อความทั้งหมดจากกล่องจดหมาย เพื่อดึงเฉพาะข้อความที่ตรงกับเงื่อนไขบางอย่าง ให้ใช้เมธอดโอเวอร์โหลด list_messages(query) เมธอดที่รับ MailQuery เป็นอาร์กิวเมนต์. MailQuery คลาสนี้ให้คุณสมบัติต่าง ๆ สำหรับระบุเงื่อนไขการค้นหา เช่น วันที่, หัวเรื่อง, ผู้ส่ง, ผู้รับ เป็นต้น

เพื่อสร้างนิพจน์การค้นหา ให้ใช้ MailQueryBuilder คลาส ขั้นแรกกำหนดเงื่อนไขและข้อจำกัดทั้งหมดที่จำเป็น แล้วเติมวัตถุ MailQuery ด้วยคิวรีที่สร้างโดย MailQueryBuilder. Pop3Client ใช้วัตถุ MailQuery นี้เพื่อดึงข้อมูลที่กรองจากเซิร์ฟเวอร์

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีกรองและดึงอีเมลจากบัญชี Gmail ตามเกณฑ์ต่าง ๆ รวมถึงหัวเรื่อง, วันที่ภายใน, ผู้ส่ง, และผู้รับ นอกจากนี้ยังแสดงการกรองแยกแยะตัวพิมพ์ใหญ่‑เล็กและวิธีสร้างคิวรีที่ซับซ้อนอย่างมีประสิทธิภาพ

  1. สร้างการเชื่อมต่อกับเซิร์ฟเวอร์ Gmail POP3 ด้วย Pop3Client คลาสที่มีที่อยู่เซิร์ฟเวอร์, พอร์ต, ชื่อผู้ใช้, และรหัสผ่านที่ระบุ ตัวเลือกความปลอดภัยตั้งค่าเป็น AUTO เพื่อการเชื่อมต่อที่ปลอดภัย
  2. สร้างอินสแตนซ์ของ MailQueryBuilder เพื่อสร้างเกณฑ์การค้นหาสำหรับการกรองอีเมล
  3. การกรองตาม หัวเรื่อง:
    • อีเมลที่มีคำ "Newsletter" ในหัวเรื่องถูกระบุเป็นเงื่อนไขฟิลเตอร์
  4. การกรองโดย วันที่ภายใน:
    • กำหนดฟิลเตอร์สำหรับอีเมลที่ได้รับในปัจจุบัน
    • เพิ่มฟิลเตอร์เพิ่มเติมเพื่อดึงอีเมลที่ได้รับในสัปดาห์ที่ผ่านมา
  5. การกรองโดย ผู้ส่ง:
    • ฟิลเตอร์ถูกนำไปใช้เพื่อค้นหาอีเมลจากที่อยู่อีเมลเฉพาะ (saqib.razzaq@127.0.0.1) และรวมอีเมลจากโดเมนเฉพาะ (SpecificHost.com)
  6. การกรองโดย ผู้รับ:
    • ระบุฟิลเตอร์เพื่อค้นหาอีเมลที่ส่งถึงผู้รับเฉพาะ
  7. รวมคิวรี ด้วยโอเปอเรเตอร์ OR เพื่อค้นหาอีเมลที่ตรงกับหัวเรื่องที่กำหนดหรือส่งจากที่อยู่อีเมลเฉพาะ
  8. การกรองแยกแยะตัวพิมพ์ใหญ่‑เล็ก:
    • ระบุฟิลเตอร์แยกแยะตัวพิมพ์ใหญ่‑เล็กสำหรับหัวเรื่องที่มีคำ "Newsletter" (แสดงด้วยพารามิเตอร์ True)
  9. รายการข้อความ:
    • เมธอด list_messages() ถูกเรียกพร้อมคิวรีที่สร้างขึ้นเพื่อดึงข้อความที่กรองจากกล่องจดหมาย
  10. สุดท้าย พิมพ์จำนวนของข้อความที่กรองแล้ว

กรองอีเมลตามวันที่

เพื่อดึงข้อความตามวันที่ส่ง ใช้ internal_date คุณสมบัติตามที่แสดงในตัวอย่างโค้ดด้านล่าง:

import aspose.email as ae
from datetime import datetime

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())

กรองอีเมลตามช่วงวันที่

เพื่อดึงข้อความภายในช่วงวันที่ ใช้เดียวกัน internal_date คุณสมบัติที่ระบุช่วงวันที่ตามที่แสดงในตัวอย่างโค้ดด้านล่าง:

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
# Emails that arrived in last 7 days
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))

กรองอีเมลตามผู้ส่ง

เพื่อดึงข้อความจากผู้ส่งเฉพาะ ใช้ from_address คุณสมบัติตามที่แสดงในตัวอย่างโค้ดด้านล่าง:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")

กรองอีเมลตามโดเมน

เพื่อดึงข้อความจากโดเมนเฉพาะ ใช้ from_address คุณสมบัติตามที่แสดงในตัวอย่างโค้ดด้านล่าง:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")

กรองอีเมลตามผู้รับ

เพื่อดึงข้อความไปยังผู้รับเฉพาะ ใช้ to คุณสมบัติตามที่แสดงในตัวอย่างโค้ดด้านล่าง:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")

สร้างคำค้นหาซับซ้อน

บางครั้งจำเป็นต้องตอบสนองมากกว่าหนึ่งคำค้นหา Aspose.Email ทำให้สามารถรวมคำค้นหาในหลายคำสั่งได้ สร้าง MailQueryBuilder อ็อบเจกต์และใช้คุณสมบัติของมันเพื่อสร้างคิวรีเฉพาะ

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

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีรวมคิวรีด้วยโอเปอเรเตอร์ AND:

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
builder.from_address.contains("SpecificHost.com")

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

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีรวมคิวรีด้วยโอเปอเรเตอร์ OR:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))

ใช้ฟิลเตอร์แยกแยะตัวพิมพ์ใหญ่‑เล็ก

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

Method Aspose.Email.StringComparisonField.contains(value, ignore_case) Method Aspose.Email.StringComparisonField.equals(value, ignore_case) Method Aspose.Email.StringComparisonField.not_contains(value, ignore_case) Method Aspose.Email.StringComparisonField.not_equals(value, ignore_case)

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีนำความสามารถนี้ไปใช้ในโครงการของคุณ:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)