Email bị trả lại và thông báo gửi

Khi gửi email, bạn muốn biết liệu nó đã được gửi thành công đến người nhận hay chưa. Điều quan trọng không kém là khả năng phát hiện và quản lý email bị trả lại, xảy ra khi email không thể gửi được. Chúng có thể xảy ra vì nhiều lý do, bao gồm địa chỉ email không hợp lệ, hộp thư đầy hoặc sự cố máy chủ. Việc phát hiện những email bị trả lại này là rất quan trọng để duy trì danh sách email sạch sẽ và cập nhật cũng như đảm bảo rằng thư của bạn đến được đúng người. Trong bài viết này, chúng ta sẽ khám phá cách xử lý hiệu quả các thông báo gửi email bị trả lại và gửi trong môi trường C# .NET.

API C# .NET để xử lý email bị trả lại và thông báo gửi

Để quản lý hiệu quả các thông báo gửi email và gửi lại trong C# .NET, chúng tôi sẽ sử dụng thư viện Aspose.Email, thư viện này cung cấp một bộ công cụ và chức năng toàn diện cho các tác vụ liên quan đến email. Aspose.Email for .NET. Bạn có thể sử dụng tiềm năng của API bằng cách lấy DLL của nó thông qua tải xuống hoặc cài đặt nó từ NuGet bằng lệnh sau:

PM> Install-Package Aspose.Email

Gửi email kèm theo thông báo gửi

Đoạn mã bên dưới minh họa cách tạo email và thiết lập thông báo gửi bằng Aspose.Email. Mã này cho phép bạn tạo thư email, chỉ định địa chỉ người gửi và người nhận cũng như định cấu hình thông báo gửi thành công và thất bại. Ngoài ra, nó còn thêm tiêu đề MIME vào tin nhắn để theo dõi toàn diện hơn. Mã thực hiện các bước sau:

  1. Tạo một tin nhắn email mới: Mã bắt đầu bằng cách tạo một đối tượng MailMessage mới. MailMessage là lớp đại diện cho tin nhắn eml có thể được gửi.

  2. Đặt thông báo gửi: Tùy chọn thông báo gửi được đặt thành cả OnSuccess và OnFailure. Điều này có nghĩa là người gửi muốn nhận được báo cáo gửi nếu tin nhắn được gửi thành công hoặc nếu việc gửi không thành công.

  3. Thêm tiêu đề MIME cho Thông báo đã đọc và xử lý: Tiêu đề của đối tượng thư được sử dụng để thêm tiêu đề “Read-Receipt-To” và “Disposition-Notification-To” với email của người gửi. Các tiêu đề này yêu cầu thông báo đã đọc và xử lý tới địa chỉ email của người gửi khi người nhận nhận và xử lý email tương ứng.

  4. Thiết lập Máy khách SMTP: Lớp SmtpClient được sử dụng để gửi email. Một phiên bản của lớp này được tạo với thông tin đăng nhập của máy chủ và người dùng được chỉ định.

  5. Gửi tin nhắn: Cuối cùng, phương thức Gửi của đối tượng SmtpClient được gọi với đối tượng MailMessage làm đối số để gửi email.

// Tạo tin nhắn
MailMessage msg = new MailMessage();
msg.From = "sender@sender.com";
msg.To = "receiver@receiver.com";
msg.Subject = "the subject of the message";

// Đặt thông báo gửi cho tin nhắn thành công và thất bại và Thêm tiêu đề MIME
msg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess | DeliveryNotificationOptions.OnFailure;
msg.Headers.Add("Read-Receipt-To", "sender@sender.com");
msg.Headers.Add("Disposition-Notification-To", "sender@sender.com");

// Gửi tin nhắn
SmtpClient client = new SmtpClient("host", "username", "password");
client.Send(msg);

Xử lý email bị trả lại

Ngoài việc đảm bảo gửi email thành công, bạn có thể tận dụng các tính năng của thư viện để xử lý email bị trả lại. Mẫu mã bên dưới minh họa cách tải và kiểm tra trạng thái của thư email bị trả lại. Nó truy xuất và hiển thị thông tin quan trọng về một email bị trả lại, chẳng hạn như tên tệp, trạng thái trả lại, hành động, người nhận, lý do, trạng thái và địa chỉ email của người nhận từ thư gốc. Mã thực hiện các bước sau:

  1. Mã bắt đầu bằng cách tạo một phiên bản của lớp MailMessage để tải thư email từ tệp được chỉ định bằng phương thức Load.

  2. Sau đó, nó sẽ kiểm tra xem email có bị trả lại hay không bằng cách gọi phương thức CheckBounced. Kết quả của thao tác này được lưu trữ trong đối tượng BounceResult.

  3. Sau đó, mã sẽ tiến hành in tên tệp ra bảng điều khiển cung cấp thông tin chi tiết về thông báo thông qua các thuộc tính sau:

MailMessage mail = MailMessage.Load(fileName);
BounceResult result = mail.CheckBounced();
Console.WriteLine(fileName);
Console.WriteLine("IsBounced : " + result.IsBounced);
Console.WriteLine("Action : " + result.Action);
Console.WriteLine("Recipient : " + result.Recipient);
Console.WriteLine();
Console.WriteLine("Reason : " + result.Reason);
Console.WriteLine("Status : " + result.Status);
Console.WriteLine("OriginalMessage ToAddress 1: " + result.OriginalMessage.To[0].Address);
Console.WriteLine();

Phần kết luận

Trong bài viết này, chúng tôi đã thu hút sự chú ý của bạn về tầm quan trọng của việc gửi email bị trả lại và thông báo gửi. Chúng tôi cũng cung cấp các cách xử lý được hỗ trợ bằng các mẫu mã. Giờ đây, bạn có sẵn các công cụ mạnh mẽ để cho phép gửi email thành công và quản lý mọi email bị trả lại có thể xảy ra. Bằng cách kết hợp những phương pháp này vào dự án của mình, bạn có thể đạt được giao tiếp qua email hiệu quả trong môi trường C# .NET và đảm bảo rằng thư của bạn đến được với những người nhận mong muốn.

Để biết thêm thông tin chi tiết hoặc các tính năng khác của Aspose.Email for .NET, bạn có thể truy cập tài liệu của chúng tôi. Trong trường hợp bạn có thắc mắc hoặc gặp bất kỳ khó khăn nào, hãy truy cập diễn đàn của chúng tôi.

Xem thêm