2017-09-26 50 views
1

我已創建函數發送電子郵件。該功能在本地主機上工作成功,但在服務器上失敗,沒有任何異常。我知道問題來自我的端口IP地址無法發送電子郵件正文包含IP地址和端口號

樣品身體string body = "<p>Please click <a href=\"http://123.10.10.10:9200/User/Test?userId=24c04b9e-5a32-4b7c-a61e-ea3303dac679\">here</a></p>Thank You."

問題是:之間IP地址端口

成功發送電子郵件,如果我刪除:

你們有什麼想法嗎?

public void Sent(string sender, string receiver, string subject, string body) 
    { 
     using (MailMessage mail = new MailMessage(sender, receiver)) 
     { 
      using (SmtpClient client = new SmtpClient()) 
      { 
       client.Port = 25; 
       client.DeliveryMethod = SmtpDeliveryMethod.Network; 
       client.UseDefaultCredentials = false; 
       client.Host = "mail.companyName.com.my"; 
       mail.Subject = subject; 
       mail.IsBodyHtml = true; 
       mail.Body = body; 
       client.Send(mail); 
      } 
     } 
    } 
+0

你的意思是成功交付的郵件取決於正文內容?是唯一的線索,你的郵件沒有交付給收件人,或者你有權訪問smtp服務器,並可以查看其日誌?指定一個返回地址,並查看該smtp服務器是否反彈交付失敗。並嘗試一個不同的smtp服務器。 – dlatikay

+0

就是這樣。除了頂部的樣品以外,其他身體是成功的。我需要使用我的公司smtp。 –

+1

我想到的唯一的事情就是在交付路線上的某處放置一個過濾器,它根據內容規則丟棄郵件。那麼問題很可能不在你的代碼中。確實有可能在html體內傳遞包含非標準端口URL的郵件,我們一直都在做。 – dlatikay

回答

1

你這樣做是正確的代碼來發送郵件就可以了(你可能需要修改函數名,使SMTP主機名配置的,但這裏不是重點)。

繼電器的電子郵件傳遞失敗,對客戶沒有任何直接的反饋意見(無一例外)關於這種失敗。

最好的辦法是在Set-HostedContentFilterPolicy中設置IncreaseScoreWithRedirectToOtherPort屬性,以防您的郵件提供商爲Office365,或者在遇到郵件投遞鏈時遇到的其他郵件提供商中的類似垃圾郵件過濾器機制。

您可以設置reply-to地址,並希望目標服務器能夠反彈出現故障並提供更多信息。或者讓郵件服務器的管理員查看日誌。更多的信息在這裏:
https://serverfault.com/questions/659861/office-365-exchange-online-any-way-to-block-false-url-spam

0

嘗試設置「mail.Body」接收,而不是一個編碼字符串一個原始的HTML信息,如:

mail.Body = new System.Web.Mvc.HtmlHelper(new System.Web.Mvc.ViewContext(), new System.Web.Mvc.ViewPage()).Raw(body).ToString(); 

或者把using System.Web.Mvc在起步階段,所以它變得更短,更容易理解:

using System.Web.Mvc 

mail.Body = new HtmlHelper(new ViewContext(), new ViewPage()).Raw(body).ToString(); 
+0

該選項也不起作用。 –

相關問題