2014-10-09 130 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