使用C#发送消息在本地工作,但是静默失败

时间:2013-07-21 19:31:46

标签: c# asp.net gmail

嗨,我使用以下代码发送预订表格,但它在本地工作但是当我把它现场时它失败并且不确定原因:

protected void Page_Load(object sender,EventArgs e)     {

}
protected void SendMail()
{
    var sDate = startDate.Text;
    var eDate = endDate.Text;

    // Gmail Address from where you send the mail
    var fromAddress = "xxx@googlemail.com";
    // any address where the email will be sending
    var toAddress = "silverhillcattery@hotmail.co.uk";
    //Password of your gmail address
    const string fromPassword = "xxx";
    // Passing the values and make a email formate to display
    string subject = YourSubject.Text.ToString();
    string body = "From: " + YourName.Text + "\n";
    body += "Email: " + YourEmail.Text + "\n";
    body += "Contact Number: " + txtContactNumber.Text + "\n";
    body += "Subject: " + YourSubject.Text + "\n";
    body += "Question: \n" + Comments.Text + "\n";
    body += "Pet Name(s): \n" + txtPetName.Text + "\n";
    body += "Start Date: \n" + sDate + "\n";
    body += "End Date: \n" + eDate + "\n";

    // smtp settings
    var smtp = new System.Net.Mail.SmtpClient();
    {
        smtp.Host = "smtp.gmail.com";
        smtp.Port = 587;
        smtp.EnableSsl = true;
        smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
        smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
        smtp.Timeout = 20000;
    }
    // Passing values to smtp object
    smtp.Send(fromAddress, toAddress, subject, body);
}

protected void Button1_Click(object sender, EventArgs e)
{
    try
    {
        //here on button click what will done 
        SendMail();
        DisplayMessage.Text = "Thank you for contacting us we will get back to you shortly.  If you would like to talk to us, please call 0208 236 9572";
        DisplayMessage.Visible = true;
        YourSubject.Text = "";
        YourEmail.Text = "";
        YourName.Text = "";
        Comments.Text = "";
    }
    catch (Exception) { }
}

它不会发送消息或显示“感谢您联系......”

这是www.silverhillcattery.co.uk网站

非常感谢任何帮助!

更新

我已根据建议添加了错误消息,现在我收到以下错误:

“SMTP服务器需要安全连接或客户端未经过身份验证”

我会研究这个问题。

1 个答案:

答案 0 :(得分:2)

我只能猜测您的凭据在您的本地环境中工作,但不在您的实时环境中。如果您的代码因发送异常而失败,它将绕过显示代码并直接转到您的“catch”代码。

要调试它,我会在显示后放置发送以查看发生了什么或更恰当地修改catch(异常)以获取错误并显示该错误。

catch (Exception ex) 
{
          DisplayMessage.Text = "Failed to send email. Error = " + ex.message;
        DisplayMessage.Visible = true;
}