2014-10-09 166 views
0

我使用下面的一段代碼來發送郵件,這是在本地host.I上運行完美的工作,我上傳到服務器的網站現在,當我嘗試實現同樣的事情時,郵件將無法發送。請幫助。本地郵件發送,但上傳到服務器郵件不發送在asp.net

public void send_click(object sender, EventArgs e) 
{ 
    mail(); 
} 

public void mail() 
{ 
    SmtpClient smtpClient = new SmtpClient(); 

    System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); 

    MailAddress fromAddress = new MailAddress(tb_email.Text, tb_name.Text); 

    smtpClient.Host = "smtp.gmail.com"; 
    smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
    smtpClient.UseDefaultCredentials = false; 

    smtpClient.EnableSsl = true; 


    smtpClient.Credentials = new NetworkCredential("[email protected]", "***Password***"); 

    smtpClient.Port = 587; 

    message.From = fromAddress; 

    message.To.Add(new MailAddress("[email protected]")); 

    // message.Subject = ddlSubject.SelectedItem.Text; 

    //message.CC.Add("[email protected]"); 

    message.IsBodyHtml = true; 
    StringBuilder msg = new StringBuilder(); 

    msg.Append(tb_msg.Text); 
    msg.Append("<br/>"); 
    msg.Append(tb_email.Text); 
    message.Body = msg.ToString(); 




    //this code adds event handler to notify that mail is sent or not 
    smtpClient.SendCompleted += new SendCompletedEventHandler(smtpClient_SendCompleted); 

    smtpClient.Send(message); 
    if (smtpClient.EnableSsl == true) 
    { 

     string CloseWindow = "alert('Message Sent Successfully!');"; 
     Page.ClientScript.RegisterStartupScript(this.GetType(), "CloseWindow", CloseWindow, true); 
    } 
    else 
    { 
     string CloseWindow = "alert('Problem in Sending mail...try later!');"; 
     Page.ClientScript.RegisterStartupScript(this.GetType(), "CloseWindow", CloseWindow, true); 
    } 


} 
void smtpClient_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) 
{ 
    System.Net.Mail.MailMessage mailMessage = e.UserState as System.Net.Mail.MailMessage; 
    if (e.Cancelled || e.Error != null) 
    { 

     Response.Write(e.Error.Message); 
     Response.Write(e.Error.StackTrace); 
    } 
    else 
    { 
     Response.Write("Email sent successfully"); 
    } 
} 
+0

在其服務器在託管 如果服務器位置是離你而去 谷歌避免來自不同的地方登錄 您需要更改設置在您的谷歌帳戶 – 2014-10-09 06:19:28

+0

檢查服務器的事件查看器。是否記錄了任何有關smtpsvc或asp.net錯誤的警告?你有沒有嘗試過使用pickup目錄?有了這個你可以確保,你的應用程序工作正常,錯誤可能是由服務器/防火牆/ ISP – Marco 2014-10-09 06:32:31

回答

0

如果你已經上傳到企業服務器: 1.確保您的防火牆沒有阻止的是IIS工作進程w3wp.exe的的傳出請求; 2.驗證您在頁面上以及在事件查看器上獲得的錯誤消息;

您發送的方式與我發送的方式幾乎相同,但沒有發送sendCompleted事件,所以它不應該是代碼的問題。它與this postthis one幾乎相同。

0

而不是SmtpClient smtpClient = new SmtpClient();SmtpClient smtpClient = new SmtpClient("xx.xx.xxx.xx");

哪裏xx.xx.xxx.xx是您正在使用GoDaddy的說服務器domain.If的IP地址,它會提供的IP地址爲你主持你的site.If你不知道IP地址只是ping站點名稱。例如,如果您的網站名稱是sum1.com然後做ping sum1.com ..它會顯示您的服務器提供的IP地址。

0

如果錯誤位於您的應用程序或您的託管環境中,我們無法從這裏知道。 您可以採取幾個步驟來縮小問題的根源。

首先:檢查Windows事件日誌。如果有Asp.net錯誤或smtpsvc警告,這可能是相關的,並給你一個失敗的線索!

要檢查,如果您的應用程序本身的工作,並試圖在你的web.config

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="SpecifiedPickupDirectory"> 
     <specifiedPickupDirectory pickupDirectoryLocation="C:\smtp"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 

發送郵件更改郵件設置,如果你現在想從內您發送郵件沒有拋出異常應用程序,它會被放到c:\ smtp中。如果它在那裏,你的應用程序工作正常,問題可能是由你的服務器,防火牆或ISP引起的。

其次fireup一個cmd外殼,並檢查您的SMTP設置正確,通過Telnet遠程登錄到它:

telnet mail.yourmailrpvider.net 25 

如果拋出一個錯誤,這很可能是您的防火牆阻止SMTP流量,您需要與您的管理員聯繫

0

請根據您上傳應用程序的服務器更改smtpClient.Host和憑據。

+0

什麼應該是客戶端主機? – Chelsea 2014-10-09 10:56:29

相關問題