2013-08-24 56 views
0

我的問題可能是重複的,但我沒有爲我的問題找到適當的解決方案。這就是爲什麼我問。從特定的郵件服務器發送郵件時發生SmtpException

我有一個asp網站。我使用smtpclient發送messages.My代碼與gmail settings.By工作正常。但在生產服務器,他們正在使用Bellnetwork(smtp10.on.aibn.com)郵件服務器。他們是使用端口25,也不使用SSL(電子郵件提供商不支持SSL)。但是,相同的郵件設置在過去的2 - 3年內運行良好,但現在當我們從我們的網站(製作)發送一些消息1或2沒有發送出去,其他人會發送成功。奇怪的是過去3年沒有問題。我收到失敗郵件的以下錯誤。

例外:

1.

 System.IO.IOException: Unable to read data from the transport connection: net_io_connectionclosed. 
    at System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(Byte[] buffer, Int32 offset, Int32 read, Boolean readLine) 
    at System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine) 
    at System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller) 
    at System.Net.Mail.CheckCommand.Send(SmtpConnection conn, String& response) 
    at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception) 
    at System.Net.Mail.SmtpClient.Send(MailMessage message) 
    --- End of inner exception stack trace --- 
    at System.Net.Mail.SmtpClient.Send(MailMessage message) 
    at Handler.BLL.cSendMail.SendMail(String p_strFrom, String p_strDisplayName, String p_strTo, String p_strSubject, String p_strMessage, String strFileName)

2.

 
System.IO.IOException: Unable to read data from the transport connection: net_io_connectionclosed.

3.

 
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 67.69.240.69:25 
System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 67.69.240.69:25 
    at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) 
    at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception) 
    --- End of inner exception stack trace --- 
    at System.Net.ServicePoint.GetConnection(PooledStream PooledStream, Object owner, Boolean async, IPAddress& address, Socket& abortSocket, Socket& abortSocket6, Int32 timeout) 
    at System.Net.PooledStream.Activate(Object owningObject, Boolean async, Int32 timeout, GeneralAsyncDelegate asyncCallback) 
    at System.Net.PooledStream.Activate(Object owningObject, GeneralAsyncDelegate asyncCallback) 
    at System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout) 
    at System.Net.Mail.SmtpConnection.GetConnection(String host, Int32 port) 
    at System.Net.Mail.SmtpClient.Send(MailMessage message) 
    --- End of inner exception stack trace --- 
    at System.Net.Mail.SmtpClient.Send(MailMessage message) 
    at Handler.BLL.cSendMail.SendMail(String p_strFrom, String p_strDisplayName, String p_strTo, String p_strSubject, String p_strMessage, String strFileName)

我的代碼:

 public bool SendMail(string p_strFrom, string p_strDisplayName, string p_strTo, string p_strSubject, string p_strMessage , string strFileName) 
    { 
     try 
     { 
      p_strDisplayName = _DisplayName; 
      string smtpserver = _SmtpServer; 
      SmtpClient smtpClient = new SmtpClient(); 
      MailMessage message = new MailMessage(); 
      MailAddress fromAddress = new MailAddress(_From,_DisplayName); 
      smtpClient.Host = _SmtpServer; 
      smtpClient.Port = Convert.ToInt32(_Port); 
      string strAuth_UserName = _UserName; 
      string strAuth_Password = _Password; 
      if (strAuth_UserName != null) 
      { 
       System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential(strAuth_UserName, strAuth_Password); 
       smtpClient.UseDefaultCredentials = false; 
       if (_SSL) 
       { 
        smtpClient.EnableSsl = true; 
       } 
       smtpClient.Credentials = SMTPUserInfo; 
      } 
      message.From = fromAddress; 

      message.Subject = p_strSubject; 
      message.IsBodyHtml = true; 
      message.Body = p_strMessage; 
      message.To.Add(p_strTo); 
      try 
      { 
       smtpClient.Send(message);      
       return true; 
      } 
      catch (SmtpException ee) 
      { 
      Log.WriteSpecialLog("smtpClient mail sending first try failed : " + ee.ToString(),""); 
      Log.WriteSpecialLog("status code : " + ee.StatusCode, ""); 
     } 
     }     
+0

這是端口錯誤smtpClient.Port = Convert.ToInt32(_Port); 更改端口號 – skhurams

+0

我們現在使用的端口是25,我必須嘗試使用​​哪個端口? – JIKKU

+0

你使用的是Gmail還是godaddy? – skhurams

回答

0

此代碼爲我工作

public static string sendMail(string fromEmail, string toEmail, string subject, string body, string Name, string bcc="" , string replyTo="") 
    { 
      MailMessage mailer = new MailMessage 
            { 
             IsBodyHtml = true, 
             From = new MailAddress(fromEmail, "yoursite.com"), 
             Subject = subject, 
             Body = body, 
             BodyEncoding = Encoding.GetEncoding("utf-8") 
            }; 

      mailer.To.Add(new MailAddress(toEmail, toEmail)); 

      // 
      if (!string.IsNullOrEmpty(bcc)) 
      { 
       mailer.Bcc.Add(bcc); 
      } 
      // 
      if (!string.IsNullOrEmpty(replyTo)) 
      { 
       mailer.Headers.Add("Reply-To", replyTo); 
      } 
      // 
      AlternateView plainView = AlternateView.CreateAlternateViewFromString(Regex.Replace(body, "<(.|\\n)*?>", string.Empty), null, "text/plain"); 

      AlternateView htmlView = AlternateView.CreateAlternateViewFromString(body, null, "text/html"); 

      mailer.AlternateViews.Add(plainView); 
      mailer.AlternateViews.Add(htmlView); 

      SmtpClient smtp = new SmtpClient(ConfigurationManager.AppSettings["SMTPserver"]); 
      smtp.DeliveryMethod = SmtpDeliveryMethod.Network; 
      //smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; 
      NetworkCredential basicAuthenticationInfo = new NetworkCredential(ConfigurationManager.AppSettings["passMail"], ConfigurationManager.AppSettings["passKey"]); 
      smtp.UseDefaultCredentials = false; 
      smtp.Credentials = basicAuthenticationInfo; 
      smtp.EnableSsl = false; 
      smtp.Port = ConfigurationManager.AppSettings["Port"]; 
      // 
       try 
       { 
        smtp.Send(mailer);     
        return "Email sent successfully !"; 
       } 
       catch (Exception ex) 
       { 
         return "Failure in Email Message= !" + ex.message; 
       } 
    } 
+0

我的任何區別代碼和你的? – JIKKU

相關問題