2008-09-11 34 views
5

Tôi hiện đang lặp qua một bộ dữ liệu và gọi phương thức Send() của System.Net.Mail.SmtpClient. Vấn đề với điều này là nó chậm. Mỗi email mất khoảng 5-10 giây để gửi (có thể đây chỉ là vấn đề với máy chủ của tôi). Tôi phải ghi đè mặc định executionTimeout trong tập tin web.config của tôi (nó mặc định là 90 giây) như thế này:Cách tốt nhất để gửi các lô email lớn trong ASP.NET là gì?

<httpRuntime executionTimeout="3000" /> 

Một caveat: Tôi đang trên một máy chủ chia sẻ, vì vậy tôi không nghĩ rằng có thể cho tôi để gửi bằng cách sử dụng tùy chọn PickupDirectoryFromIis (ít nhất, nó đã cho tôi lỗi khi tôi bật nó lên).

Trả lời

6

Bạn có thể gửi thư không đồng bộ. Bằng cách đó, thời gian chờ sẽ không làm gián đoạn quá trình gửi của bạn.

Bài viết này sẽ giúp bạn bắt đầu với điều đó: Sending Emails Asynchronously in C#.

Có cách tiếp cận khác ở đây: http://www.vikramlakhotia.com/Sending_Email_asynchronously_in_AspNet_20.aspx

Và tắt Tất nhiên có một số khách hàng thương mại có sẵn, nhưng là người duy nhất mà tôi đã cố gắng và có thể đề nghị là http://www.aspnetemail.com/

0

Chắc chắn đẻ trứng nó đi trên một nền công nhân để họ đi ra ngoài không đồng bộ.

BTW, 5-10 giây cho mỗi e-mail có vẻ hơi chậm đối với tôi. Trên máy chủ của tôi, nó chỉ mất một phần của một giây cho mỗi e-mail.

Các vấn đề liên quan