2013-10-03 69 views
4

我想通過使用我的客戶組織的電子郵件服務器的Web應用程序發送電子郵件。以下是我正在使用的代碼。.net smtp不發送電子郵件,沒有錯誤

MailMessage MyMailMessage = new MailMessage(); 
MyMailMessage.Subject = "Email testing"; 
MyMailMessage.From = new MailAddress("[email protected]", "My name"); 
MyMailMessage.To.Add(new MailAddress(strEmail, "Applicant")); 

SmtpClient mySmtpClient = new SmtpClient(); 
mySmtpClient.EnableSsl = true; 
mySmtpClient.Send(Accepted); 

Web.config文件:

<mailSettings> 
    <smtp deliveryMethod="Network" from=" [email protected]"> 
    <network host="smtps.mydomain.com" port="465" enableSsl="true" defaultCredentials="true" 
    userName="myName" password="myPassword" /> 
    </smtp> 
</mailSettings> 

,當我用gmail的smtp細節或我的本地組織的SMTP細節它完美的罰款。出於某種原因,它不工作,也沒有拋出任何錯誤。

我已經嘗試過調試並檢查了說'超時'的異常。

我不知道還有什麼要檢查。有人可以請建議一個解決方案。

注意:我也檢查過沒有防火牆阻塞端口:465。

謝謝。

親切的問候,

南基

回答

1

試試這個:

var sysLogin="[email protected]"; 
var sysPass="[email protected]"; 
var sysAddress = new MailAddress(sysLogin, "Message from me!"); 

var receiverAddress = new MailAddress("[email protected]"); 

var smtp = new SmtpClient 
     { 
      Host = "smtp.gmail.com", //gmail example 
      Port = 587, 
      EnableSsl = false, 
      DeliveryMethod = SmtpDeliveryMethod.Network, 
      UseDefaultCredentials = false, 
      Credentials = new NetworkCredential(sysLogin, sysPass) 
     }; 

     using (var message = new MailMessage(sysAddress, receiverAddress) { Subject = "Some subject", Body = "Some text" }) 
     { 
      smtp.Send(message); 
     } 
1

您是否已經驗證客戶端SMTP服務器已經安裝了有效的SSL證書,並且可以接受在端口465連接?

如果您能夠這樣做,請運行WireShark等數據包嗅探器來檢查數據包流。

SysIntenerals TcpView工具是一個輕量級的實用程序,它可以讓你看到包狀態。

+0

同時檢查日誌文件可以確定您是否有DNS發送問題。 –

1
<system.net> 
    <mailSettings> 
     <smtp from="emialid.com"> 
     <network host="domain.com" port="25" userName="emialid.com" password="******" defaultCredentials="false"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 



public string SendEmailTest(String EmailMessage, String FromMail, String MailPassword, String MailServer, String To, String CC, String BCC, String DisplayName, String Subject, String Attachment) 

    { 
     try 
     { 
      SmtpClient smtpClient = new SmtpClient(); 

      MailMessage message = new MailMessage(); 

      MailAddress fromAddress; 

      fromAddress = new MailAddress(FromMail); 

      smtpClient.Host = MailServer; 
      smtpClient.Port = 25; 

      System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential(FromMail, MailPassword); 
      smtpClient.UseDefaultCredentials = false; 
      smtpClient.Credentials = SMTPUserInfo; 

      message.From = fromAddress; 

      message.To.Add(new MailAddress(To, DisplayName)); 
      if (CC != "") 
       message.CC.Add(new MailAddress(CC, DisplayName)); 
      if (BCC != "") 
       message.Bcc.Add(new MailAddress(BCC, DisplayName)); 

      message.Subject = Subject; 

      message.IsBodyHtml = true; 
      message.Body = "Your Password is : " + EmailMessage; 

      if (Attachment != "") 
       message.Attachments.Add(new Attachment(Attachment)); 

      message.Priority = MailPriority.High; 

      smtpClient.Send(message); 
      return "SendEmail"; 
     } 
     catch (Exception ex) 
     { 
      return "Email :" + ex; 
     } 

    } 
} 

}

1

您可以嘗試通過在命令PROMT(CMD)輸入 「遠程登錄smtps.mydomain.com 465」 測試連接。

Regards

0

謝謝大家的建議。我已修復它,我只需要將端口號從465更改爲25.