本地邮件已发送,但上传到服务器时,邮件不会在asp.net中发送

时间:2014-10-09 06:13:26

标签: asp.net email

我正在使用以下代码发送在本地主机上运行时工作正常的邮件。我将网站上传到服务器,现在当我尝试实现相同的功能时,邮件将不会被发送。请帮助

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("infoinnovative77@gmail.com", "***Password***");

    smtpClient.Port = 587;

    message.From = fromAddress;

    message.To.Add(new MailAddress("info@mblube.com"));

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

    //message.CC.Add("taxistax@outlook.com");

    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");
    }
}

4 个答案:

答案 0 :(得分:0)

如果您已上传到企业服务器: 1.确保您的防火墙没有阻止对作为IIS工作进程的w3wp.exe的传出请求; 2.验证您在页面上以及在事件查看器上收到的错误消息;

您发送的方式与我发送的方式几乎相同,但没有sendCompleted事件,因此不应该是代码问题。它也与this postthis one几乎相同。

答案 1 :(得分:0)

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

其中xx.xx.xxx.xx是域名的ip地址。如果您使用的是godaddy服务器,它将提供您托管站点的IP地址。如果您不知道IP地址,只需ping通站点名称。例如,如果您的站点名称是sum1.com,那么请ping sum1.com ..它将显示您的服务器提供的IP地址。

答案 2 :(得分:0)

我们无法从此处了解错误是否位于您的应用程序或托管环境中。 您可以采取一些步骤来缩小问题的根源。

首先:检查Windows EventLog。如果有Asp.net错误或smtpsvc警告,这可能是相关的,并为您提供失败的线索!

要检查您的应用程序本身是否正常工作,而不是在尝试发送邮件时抛出异常,请更改web.config中的邮件设置

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

如果您现在想要从您的应用程序中发送邮件,它将被放入c:\ smtp。如果它在那里你的应用程序工作正常,问题很可能是由你的服务器,防火墙或ISP造成的。

然后启动一个cmd shell并通过telnet到它来检查你的smtp设置是否正确:

telnet mail.yourmailrpvider.net 25

如果这会引发错误,则很可能您的防火墙阻止了smtp流量,并且您需要与管理员取得联系

答案 3 :(得分:0)

请根据您上传应用程序的服务器更改smtpClient.Host和凭据。