2011-05-05 45 views
7

Tôi đã xây dựng trang web cho khách hàng và họ muốn có một công cụ bản tin tùy chỉnh. Xây dựng công cụ rất dễ dàng, nhưng tôi không biết cách gửi email.Làm cách nào để gửi email hàng loạt từ ASP.NET?

Tôi thiết lập trang thử nghiệm và được quản lý để gửi email thử nghiệm cho chính tôi bằng không gian tên System.Net.Mail. Tôi đã thử áp dụng mã này cho một vòng lặp trên trang bản tin, nhưng nó trở thành một nhiệm vụ khá khó khăn. Vòng gửi email sẽ khóa toàn bộ trang web trong khoảng một giờ trong khi gửi email. Đôi khi nó sẽ hủy bỏ vòng giữa chừng và một số email sẽ không được gửi đi.

Tôi đã thử bắt đầu vòng lặp trên một chuỗi khác.

protected void btnSendNewsletter_Click(object sender, EventArgs e) 
{ 
    Thread t = new System.Threading.Thread(new ThreadStart(SendEmails)); 
    t.Start(); 
} 

nhưng điều này vẫn khiến trang web hoạt động chậm và cũng có thói quen hủy bỏ một phần. Phương pháp phổ biến để gửi email hàng loạt là gì? Tôi chắc rằng tôi không làm đúng.

Tôi rất mới đối với trường email trong .NET nên mọi trợ giúp đều được đánh giá cao.

+5

Sử dụng dịch vụ, không phải là trang asp.net để gửi email –

+0

bạn đang sử dụng MailServer nào? –

+0

Hơi liên quan: http://stackoverflow.com/questions/3905734/how-to-send-100-000-emails-weekly/3905805#3905805 – Piskvor

Trả lời

6

Đối với loại công việc này, bạn nên thêm một loạt công việc vào hàng đợi. Sau đó, có một chuỗi chạy mà kéo x số lượng công việc từ hàng đợi, xử lý chúng (ví dụ: gửi email) và sau đó ngủ trong một khoảng thời gian. Điều này sẽ cung cấp cho bạn ứng dụng web một số không gian thở.

Nếu bạn đang sử dụng cơ sở dữ liệu, bạn có thể tạo bảng Hàng đợi email để lưu trữ lệnh in. Tôi thích sử dụng loại lưu trữ trên bộ nhớ trong trường hợp các ứng dụng tái chế vì lý do nào đó hoặc một ngoại lệ được ném ... ít nhất bạn có thể sau đó nhận từ nơi bạn rời đi.

Nói chung, quá trình chạy chuỗi công nhân sẽ không phải là chính ứng dụng web. Nó sẽ là một dịch vụ cửa sổ hoặc một cái gì đó tương tự. Điều này có thể không thực hiện được nếu bạn đang sử dụng shared hosting.

+0

Rất nhiều thông tin và gọn gàng. Cảm ơn bạn. Bạn có biết về bất kỳ API của bên thứ ba nào mà bạn có thể đăng ký để tải tải lên chúng và cho phép họ gửi email không? – Chev

+0

Đồng ý. Mặc dù Chevex không thể tạo một dịch vụ (shared hosting) nhưng phương thức này bạn chỉ định sẽ vẫn hoạt động trong hệ thống chính. – IAmTimCorey

+0

Tôi nghĩ tùy chọn rẻ nhất sẽ cho phép bên thứ ba xử lý tải email. Tôi dường như không thể tìm thấy một api email hàng loạt tốt. Có phổ biến nhất mà hầu hết mọi người sử dụng không? – Chev

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