2012-06-11 44 views
5

Tôi có một trang web và tôi cần gửi email được cá nhân hóa cho các thành viên đã đăng ký. Đây không phải là một thủ tục quảng cáo (spam) thay vì thông báo cho họ về tình trạng của họ theo thời gian. Số lượng email phải được gửi theo lô lên đến 3000. Trang web được lưu trữ trên Windows 2008 Server (VPS) và tôi đã cài đặt SMTP trên IIS7.Cách tốt nhất để gửi email hàng loạt trong asp.net

Sau khi dành chút thời gian đọc về cách triển khai cơ chế gửi email hàng loạt thông qua asp.net, tôi cảm thấy hơi bối rối.


Từ những gì tôi đọc tôi có thể:

  • gửi chúng đồng bộ hoặc không đồng bộ (chủ đề mới) trong một vòng lặp
  • chuẩn bị và đặt chúng trong thư mục đón
  • tạo ra một dịch vụ cửa sổ sẽ kiểm tra hàng đợi hiện tại
  • gửi chúng từ máy chủ sql 2008 (Tôi có thể hiện).

Bạn có thể đề xuất cách tốt nhất để đi cùng không?

Tôi có gặp sự cố về việc liệt kê đen máy chủ của mình không?

Có cách nào tốt hơn, không được đề cập ở đây, để triển khai điều này không?

Xin cảm ơn trước.

+3

Không. Bạn chạy vào rất nhiều rủi ro cho máy chủ của bạn làm điều này trong nội bộ: danh sách đen - có.Chạy nó thông qua một dịch vụ hợp pháp - có sẵn một tấn. – matthewnreid

Trả lời

5

Liên quan đến máy chủ của bạn bị đưa vào danh sách đen, việc bạn gửi "cùng một lúc" không quan trọng đến mức nào "bạn gửi chúng đến" nhiều hơn. Nếu bạn gửi chúng cho người dùng không muốn họ, và họ báo cáo bạn là một người gửi spam thì chắc chắn bạn sẽ bị một trong nhiều trang danh sách đen DNS xung quanh liệt kê vào danh sách đen.

Luôn đảm bảo rằng mọi người chọn tham gia đầu tiên bằng hệ thống chọn tham gia kép, bạn gửi email, nếu họ trả lời "kích hoạt tài khoản" thì bạn có thể gửi thêm email, nếu họ không cho rằng họ đã nhập địa chỉ sai.

Về mặt cách tốt nhất để xử lý, tôi luôn tìm ra cách tốt nhất là viết một dịch vụ nhỏ chạy riêng biệt với trang web. Bạn thực sự không muốn gửi email bằng cách sử dụng cùng một luồng với dịch vụ IIS.

Nếu bạn muốn THỰC SỰ thực hiện theo cách chuyên nghiệp đầy đủ. Bạn sẽ muốn thực hiện một số hình thức hệ thống tin nhắn (như ActiveMQ hoặc RabbitMQ) mà bạn gửi tin nhắn xung quanh và đặt chúng vào hàng đợi, sau đó bạn sẽ tạo quy trình cửa sổ để nghe một trong những hàng đợi đó và khi email đến gửi nó đi. Bằng cách đó, nếu bộ xử lý thư của bạn chết, hoặc đang chạy chậm vv, bạn có thể mang đến nhiều bộ vi xử lý hơn, kết nối nó với cùng một hàng đợi và nhiều quy trình chia sẻ công việc (phân phối đơn giản). Một cách ít phức tạp hơn, sẽ là sử dụng hàng đợi FIFO, dễ dàng được thực hiện trong cơ sở dữ liệu, chỉ lưu email vào bảng có dấu thời gian và gửi chúng bằng SELECT TOP 10 * FROM OutgoingMail ORDER BY datestamp ASC (nhớ và sử dụng các chỉ mục thích hợp), sau đó sử dụng một dịch vụ để gửi chúng đi theo lô.

Tránh asynch nếu có thể từ IIS cho một cái gì đó như thế này, bạn không muốn các hồ bơi ứng dụng tái chế một nửa thông qua công việc của bạn.

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