2014-10-06 195 views
1

我試圖從C#/ ASP.NET編寫的Web應用程序發送電子郵件。電子郵件未送達Gmail,Yahoo,Hotmail

我試圖發送電子郵件的HTML和文本版本。 但是,當我嘗試發送到Gmail,Yahoo,Hotmail,AOL等電子郵件地址時,它並未顯示在其收件箱中。

當我發送嚴格的文本,沒有HTML替代視圖,它傳遞得很好。

有沒有人在這裏有過任何經驗?

該電子郵件傳送的精細我們的託管Exchange服務器 「@ mxxx.com」

謝謝!

編輯:還有一件事。當電子郵件未送達時,我們不會收到任何類型的送達失敗通知,它基本上會消失。

代碼:

// email the user 
       MailMessage message = new MailMessage("[email protected]", user.EmailAddress); 
       message.Bcc.Add("[email protected]"); 
       message.Bcc.Add("[email protected]"); 
       message.Bcc.Add("[email protected]"); 
       message.Subject = "Your \"mxxx.com\" password has been reset"; 
       message.ReplyToList.Add(new MailAddress("[email protected]")); 
       message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure | DeliveryNotificationOptions.Delay | 
                 DeliveryNotificationOptions.OnSuccess; 
       message.Sender = new MailAddress("[email protected]"); 

       string htmlbody = "<html><body><p>Dear " + name + ":</p>" + 
       "<p>Your password at \"mxxx.com\" has been reset to: " + newPassword + "</p>" + 
       </body></html>"; 

       var plainTextBody = "test plain text"; 

       AlternateView plainTextView = 
        AlternateView.CreateAlternateViewFromString(
         plainTextBody, message.BodyEncoding, MediaTypeNames.Text.Plain); 

       plainTextView.TransferEncoding = TransferEncoding.Base64; 
       message.AlternateViews.Add(plainTextView); 

       AlternateView htmlview = 
        AlternateView.CreateAlternateViewFromString(
         htmlbody, message.BodyEncoding, MediaTypeNames.Text.Html); 

       htmlview.TransferEncoding = TransferEncoding.Base64; 

       message.AlternateViews.Add(htmlview); 



       SmtpClient mailMan = new SmtpClient(); 
       mailMan.Send(message); 
+1

很難肯定地說,但我懷疑這些服務使用的HTML內容,在他們的垃圾郵件過濾器的因素之一 - 垃圾郵件更有效時,有一個HTML鏈接點擊上,所以稍微更有可能使用HTML。把它與任何不是100%完美的東西在你的smtp服務器的rDNS,DKIM或SPF記錄等方面結合起來,你的信息就會陷入黑洞。這就是爲什麼我總是推薦使用信譽良好的電子郵件營銷服務,即使是這樣的日常工作。 – 2014-10-06 16:01:04

+0

@JoelCoehoorn我明白了。我們肯定被送入黑洞,沒有任何電子郵件被拒絕或發送後的任何痕跡。 – bsqrd7 2014-10-06 16:10:27

回答

0

如果您避免使用AlternateView並指定該機構是HTML? 考慮測試下一個片段?:

  MailMessage message = new MailMessage("[email protected]", user.EmailAddress); 
      message.Bcc.Add("[email protected]"); 
      message.Bcc.Add("[email protected]"); 
      message.Bcc.Add("[email protected]"); 
      message.Subject = "Your \"mxxx.com\" password has been reset"; 
      message.ReplyToList.Add(new MailAddress("[email protected]")); 
      message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure | DeliveryNotificationOptions.Delay | 
                DeliveryNotificationOptions.OnSuccess; 
      message.Sender = new MailAddress("[email protected]"); 

      string htmlbody = "<html><body><p>Dear " + name + ":</p>" + 
      "<p>Your password at \"mxxx.com\" has been reset to: " + newPassword + "</p>" + 
      </body></html>"; 

      message.Body = htmlbody; 
      message.IsBodyHtml = true; 
      SmtpClient mailMan = new SmtpClient(); 
      mailMan.Send(message); 
+0

我原來就是這樣,消息仍然不會傳遞。它在我們的Hosted Exchange上收到,但顯示的是Text版本而不是HTML。 – bsqrd7 2014-10-06 16:37:07

+0

當你實例化* message *設置* IsBodyHtml = true; * so * message.IsBodyHtml = true; *然後* mailMan.Send(message)* – 2014-10-06 19:16:46

相關問題