Truy xuất Email từ máy chủ POP3

Lưu Email vào Đĩa mà không Phân tích

Để tải xuống email từ máy chủ POP3 mà không phân tích, bạn có thể sử dụng save_message phương thức của Aspose.Email Pop3Client lớp. Đoạn mã mẫu dưới đây minh họa cách lưu một tin nhắn bằng số thứ tự của nó, trong trường hợp này là số 1. save_message phương thức giữ nguyên định dạng EML gốc mà không phân tích:

Phân tích Tin nhắn trước khi Lưu

Bạn có thể lấy một tin nhắn email cụ thể bằng cách sử dụng fetch_message phương thức của Pop3Client lớp, chỉ định số thứ tự mong muốn cho đối tượng client. Đoạn mã mẫu dưới đây cho thấy cách lấy một tin nhắn cụ thể và sau đó lưu nó bằng tiêu đề của tin nhắn làm tên tệp bằng cách gọi save phương thức trên đối tượng 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)

Lọc Email từ Máy chủ theo Tiêu chí

Aspose.Email Pop3Client class cung cấp list_messages() phương thức lấy tất cả các tin nhắn từ một hộp thư. Để chỉ lấy các tin nhắn phù hợp với một số điều kiện, sử dụng phiên bản quá tải của list_messages(query) phương thức nhận MailQuery được truyền làm đối số. Các MailQuery lớp cung cấp nhiều thuộc tính để chỉ định các điều kiện truy vấn, ví dụ: ngày, tiêu đề, người gửi, người nhận, v.v.

Để xây dựng biểu thức tìm kiếm, sử dụng MailQueryBuilder lớp. Đầu tiên, định nghĩa tất cả các điều kiện và ràng buộc cần thiết, sau đó điền đối tượng MailQuery với truy vấn được tạo bởi MailQueryBuilder. Pop3Client sử dụng đối tượng MailQuery này để lấy thông tin đã lọc từ máy chủ.

Đoạn mã mẫu dưới đây trình bày cách lọc và lấy email từ tài khoản Gmail dựa trên các tiêu chí khác nhau bao gồm tiêu đề, ngày nội bộ, người gửi và người nhận. Nó cũng hiển thị lọc phân biệt chữ hoa chữ thường và minh họa cách xây dựng các truy vấn phức tạp một cách hiệu quả.

  1. Thiết lập kết nối tới máy chủ Gmail POP3 bằng Pop3Client lớp với địa chỉ máy chủ, cổng, tên người dùng và mật khẩu đã chỉ định. Các tùy chọn bảo mật được đặt thành AUTO cho kết nối an toàn.
  2. Tạo một đối tượng của MailQueryBuilder để xây dựng tiêu chí tìm kiếm cho việc lọc email.
  3. Lọc theo Tiêu đề:
    • Email chứa "Newsletter" trong tiêu đề được xác định làm điều kiện lọc.
  4. Lọc theo Ngày nội bộ:
    • Một bộ lọc được đặt cho email nhận được vào ngày hiện tại.
    • Một bộ lọc bổ sung được thêm vào để lấy email nhận được trong tuần qua.
  5. Lọc theo Người gửi:
    • Các bộ lọc được áp dụng để tìm email từ một địa chỉ email cụ thể (saqib.razzaq@127.0.0.1) và bao gồm email từ một miền nhất định (SpecificHost.com).
  6. Lọc theo Người nhận:
    • Một bộ lọc được chỉ định để tìm email gửi tới một người nhận cụ thể.
  7. Kết hợp truy vấn bằng toán tử OR để tìm email mà hoặc khớp tiêu đề cho trước hoặc được gửi từ địa chỉ cụ thể.
  8. Lọc Phân biệt Chữ HOA/THƯỜNG:
    • Một bộ lọc phân biệt chữ hoa chữ thường cho tiêu đề chứa "Newsletter" được chỉ định (đánh dấu bằng tham số True).
  9. Liệt kê Tin nhắn:
    • Phương thức list_messages() được gọi với truy vấn đã xây dựng để lấy các tin nhắn đã lọc từ hộp thư.
  10. Cuối cùng, in số lượng tin nhắn đã lọc.

Lọc email theo ngày

Để lấy các tin nhắn theo ngày giao, hãy sử dụng internal_date thuộc tính như được hiển thị trong mẫu mã dưới đây:

import aspose.email as ae
from datetime import datetime

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

Lọc email theo khoảng ngày

Để lấy các tin nhắn trong một khoảng ngày, hãy sử dụng cùng internal_date thuộc tính chỉ định khoảng ngày như được hiển thị trong mẫu mã dưới đây:

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))

Lọc email theo người gửi

Để lấy các tin nhắn từ một người gửi cụ thể, hãy sử dụng from_address thuộc tính như được hiển thị trong mẫu mã dưới đây:

import aspose.email as ae

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

Lọc email theo miền

Để lấy các tin nhắn từ một miền cụ thể, hãy sử dụng from_address thuộc tính như được hiển thị trong mẫu mã dưới đây:

import aspose.email as ae

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

Lọc email theo người nhận

Để lấy các tin nhắn cho một người nhận cụ thể, hãy sử dụng to thuộc tính như được hiển thị trong mẫu mã dưới đây:

import aspose.email as ae

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

Xây dựng các truy vấn tìm kiếm phức tạp

Đôi khi cần thiết phải đáp ứng nhiều hơn một truy vấn. Aspose.Email cho phép kết hợp các truy vấn trong nhiều câu lệnh. Tạo một MailQueryBuilder đối tượng và sử dụng các thuộc tính của nó để xây dựng các truy vấn cụ thể.

Kết hợp Truy vấn với AND

Đoạn mã mẫu sau cho bạn cách kết hợp các truy vấn với toán tử 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")

Kết hợp Truy vấn với OR

Đoạn mã mẫu sau cho bạn cách kết hợp các truy vấn với toán tử OR:

import aspose.email as ae

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

Áp dụng Lọc Phân biệt Chữ HOA/THƯỜNG

API cũng cung cấp khả năng lọc email từ hộp thư dựa trên tiêu chí phân biệt chữ hoa chữ thường. Các phương thức sau của StringComparisonField lớp cung cấp khả năng tìm kiếm email với cờ phân biệt chữ hoa chữ thường:

Phương thức Aspose.Email.StringComparisonField.contains(value, ignore_case) Phương thức Aspose.Email.StringComparisonField.equals(value, ignore_case) Phương thức Aspose.Email.StringComparisonField.not_contains(value, ignore_case) Phương thức Aspose.Email.StringComparisonField.not_equals(value, ignore_case)

Đoạn mã mẫu sau cho thấy cách triển khai khả năng này vào dự án của bạn:

import aspose.email as ae

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