2014-03-12 35 views
0

我想在C#中實現郵件發送功能, 我嘗試使用gmail設置,它工作正常。 但我的要求是要做到這一點,沒有密碼從中我們r發送郵件的郵件編號,我的設置在C#中發送郵件沒有密碼 - 發送失敗錯誤

MailMessage mailMessage = new MailMessage("[email protected]", "[email protected]"); 

mailMessage.Subject = "Welcome"; 
mailMessage.Body = "---- Mail Body ---"; 
mailMessage.IsBodyHtml = true; 
SmtpClient smtp = new SmtpClient(); 
smtp.Host = "000.000.000.000"; // we need to set a particular IP here 
smtp.EnableSsl = true; 

System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential(); 
NetworkCred.UserName = "[email protected]"; 
NetworkCred.Password = ""; 
smtp.UseDefaultCredentials = true; 
smtp.Credentials = NetworkCred; 
smtp.Port = "25"; 
smtp.Send(mailMessage); 

它觸發一個錯誤「發送郵件失敗」。 按規定,我們沒有密碼的郵件ID和SMTP端口是一個IP 面對這種情況第一次和GOOGLE了很多關於這一點,但無法找到一個解決方案

請幫

+2

什麼是來自SMTP服務器的響應?如果您控制了服務器,那麼在條件下路由郵件聽起來就像是一個問題。 (大多數SMTP服務器默認情況下不允許未經身份驗證的發送。)如果您無法控制服務器,則「未經身份驗證」的要求不受您的控制。 – David

+0

謝謝@David - '無法連接到遠程服務器'是內部異常,我的IP 000.000.000.000:25無法連接 – Nils

回答

0

我認爲你不能形成一個方面要求啓用SSL(因爲它從谷歌設置離開) 和另一方面不發送電子郵件,也是空的。字符串仍然是一個值。 更好的remoteh屬性。 試試這個

  MailAddress fromAddress = new MailAddress(ConfigurationManager.AppSettings["mailFrom"]); 
      MailAddress toAddress = new MailAddress(email); 
      string host = ConfigurationManager.AppSettings["smtpHost"]; 
      int port = Int32.Parse(ConfigurationManager.AppSettings["smtpPort"]); 
      SmtpClient smtp = new SmtpClient(host, port) 
      { 
       DeliveryMethod = SmtpDeliveryMethod.Network, 
       UseDefaultCredentials = false, 
       EnableSsl = true, 
       Credentials = new NetworkCredential(fromAddress.Address, ConfigurationManager.AppSettings["mailPassword"]) 

      }; 

好更新它的東西,這是肯定的作品 - 考慮到這個服務器上我們不」照顧一個真正的密碼太 - 喜歡你的情況下,這意味着可能模仿形成服務器。 另外一個提示:我有一個在網絡上的概率,主動directovry限制政策不允許本地發送電子郵件,以避免蠕蟲傳播

+0

謝謝@Dan Kuida - 它不起作用,下面是一些細節,System.Net .Mail.SMTPException - { 「發送郵件失敗。」} 內部異常 - { 「無法連接到遠程服務器」} 狀態碼 - System.Net.Mail.SmtpStatusCode.GeneralFailure {「A連接嘗試因爲連接方在一段時間後沒有正確響應,或者由於連接的主機未能響應而建立連接失敗000.000.000.000:25「} // IP爲例不能公開我的IP – Nils

相關問題