2010-03-02 44 views
5

Tôi đã có một ứng dụng C# cần gửi một email html qua smtp. Các email được gửi tốt, nhưng thiết lập bảo mật mặc định trên outlook (Thấp) phân loại nó như là email rác.Email HTML được tạo theo chương trình được phân loại là junkmail bởi Outlook

Nó không chính xác là một vấn đề showstopper, nhưng điều này là khá khó chịu, đặc biệt là kể từ khi thư mục rác tắt html. Tôi không muốn phải làm cho mọi người ở công ty của tôi làm điều gì đó đặc biệt để nhận những email này theo cách dễ đọc, có ai biết tôi có thể làm gì để nghĩ rằng đây là email rác không?

Mã làm cho email (công cụ cơ bản.) Config là đối tượng chứa chuỗi liên quan đến cấu hình của nội dung này, toList là danh sách địa chỉ email, nội dung/chủ đề được lấp đầy bởi các cuộc gọi chức năng khác.

Chỉnh sửa: Để thêm, tại thời điểm tôi đang tự gửi cho chính mình. Trong phiên bản trực tiếp, chúng tôi sẽ xem xét ít hơn một trăm người được gửi đến trong trường hợp xấu nhất.

Một chỉnh sửa khác: Hóa ra là xảy ra thường xuyên hơn nhiều đối với các email dài hơn tôi đã tạo vào ngày khác (~ 200-300 dòng tệ nhất) và không phải email ngắn hơn tôi đang tạo ngay bây giờ . Đó là một tiêu chí lọc đủ hợp lý, tôi cho là vậy.

 SmtpClient smtp = new SmtpClient(config.SmtpServer); 

     NetworkCredential net = new NetworkCredential(); 
     net.UserName = config.SmtpLogin; 
     net.Password = config.SmtpPass; 

     smtp.Credentials = net; 

     MailMessage msg = new MailMessage(); 
     msg.IsBodyHtml = true; 
     msg.Priority = MailPriority.Normal; 
     msg.To.Add(String.Join(",", toList.ToArray())); 
     msg.From = new MailAddress(fromAddr, "Build Server"); 
     msg.Body = "Blah html is here"; 
     msg.Subject = "Build successful: #numberhere and stuff"; 

     try 
     { 
      smtp.Send(msg); 
     } 
     catch (SmtpException) 
     { 
      //stuff 
     } 
+0

Tôi nghĩ rằng đây có nhiều việc phải làm với cấu hình máy chủ Outlook của bạn hơn so với mã khách hàng SMTP của bạn - không có gì bạn đã thể hiện ở đây nhảy ra lúc tôi như một cái gì đó sẽ kích hoạt bộ lọc "đây là thư rác". –

Trả lời

5

Tôi nghĩ đây là vấn đề về lập trình và nhiều vấn đề về cấu hình hơn. Người nhận cần thêm fromAddr vào “Danh sách người gửi an toàn” của họ.

Vấn đề là, nếu có cách cấu hình e-mail để bỏ qua bộ lọc thư rác thì tất cả những kẻ tung thư rác sẽ làm việc đó.

Nếu đó là vấn đề tạo ra e-mail hoàn toàn không rác, thì đôi khi nó có thể hoạt động và không làm việc khác. Và tất cả những kẻ gửi thư rác sẽ làm điều đó.

Bạn sẽ phải thông báo cho mọi người để cho phép e-mail từ tài khoản đó.Và có thể bạn không nên bắt đầu rằng e-mail có bất kỳ tài liệu tham khảo giải phẫu hoặc dược liệu không cần thiết nào.

+0

Nhìn vào nó, đây có lẽ là câu trả lời. = [Oh tốt, sự bất tiện nhỏ cho người dùng của tôi. – CHaskell2

0

Chỉ cần suy nghĩ, thử lặp qua danh sách của bạn và gửi email riêng. Ngoài ra, hãy thử thử nghiệm với các cấu trúc từ ngữ và html khác nhau.

1

Nếu thư của bạn Để chứa một danh sách lớn, thư có thể bị xem là spam. Hãy thử gửi một email duy nhất cho mỗi người thay vì một email hàng loạt.

Tuy nhiên:

Nếu bạn đang đi để lặp qua danh sách của bạn và gửi email cho mỗi người dùng, bạn có thể muốn xem xét việc tạo một hàng đợi sẽ được xử lý cho phép thất bại và thử lại.

Chúng tôi gặp sự cố tương tự trong hệ thống của chúng tôi, sau khoảng 20,00 tin nhắn được gửi liên tiếp nhanh (ví dụ: trong vòng lặp foreach), máy chủ thư đi đã từ chối mọi nỗ lực tiếp tục.

Thay vào đó, chúng tôi đã thêm các thư gửi đi vào bảng cơ sở dữ liệu và đã viết một dịch vụ xử lý một số email được chỉ định và sau đó tạm dừng trong một khoảng thời gian nhất định trước khi quay lại.

Ngoài ra, điều này cho phép chúng tôi chụp các lỗi và sau đó thiết lập quy tắc thử lại. Sau khi X cố gắng, chúng tôi đánh dấu thư là không thành công và báo cáo sự cố. Chúng tôi nhận thấy rằng điều này đã cung cấp một hệ thống đáng tin cậy hơn cho người dùng nhận tin nhắn của họ, cộng với họ không còn bị đánh dấu là spam nữa.

+0

+1 Tôi đồng ý với bạn @shimms. Tôi đã có một vấn đề tương tự. Lần đầu tiên tôi sử dụng một vòng lặp để lặp qua các địa chỉ người nhận. Các thư được gửi đến một cách nhanh chóng, vì vậy tài khoản 'từ' được đưa vào nhiều khách hàng dưới dạng tài khoản spam. Chúng tôi đã giải quyết được sự cố chỉ cần đợi một hoặc hai giây giữa mỗi thư. – Javier

+0

Hữu ích, nhưng trong tình huống này, tôi sẽ làm việc với quy mô nhỏ hơn nhiều, vì vậy tôi nghĩ rằng đi dọc theo những dòng này sẽ là một chút quá mức cần thiết. – CHaskell2

0

Nếu bạn gửi nhiều thư cùng một lúc, hãy gửi chúng theo từng lô nhỏ để bạn không bị ngập máy chủ. Kiểm tra nội dung email để biết các từ và ký hiệu có thể bị coi là spam bởi một số bộ lọc. Bạn cũng có thể muốn xem xét những thứ như SPF để giảm khả năng thư của bạn bị đánh dấu là spam.

1

Thêm dòng sau đây vào mã của bạn trong khi tạo MailMessage

msg.BodyEncoding = System.Text.Encoding.GetEncoding("utf-8"); 
Các vấn đề liên quan