无法通过gmail发送邮件smtp:一直在等localhost?

时间:2013-11-26 10:12:34

标签: c#

protected void Button1_Click(object sender, EventArgs e)
    {
        SmtpClient mail = new SmtpClient();
        mail.UseDefaultCredentials = false;
        mail.Host="smtp.gmail.com";
        mail.Port=465;
        mail.Credentials=new NetworkCredential("b.soham1991","*******");
        mail.DeliveryMethod = SmtpDeliveryMethod.Network;
        mail.EnableSsl = true;

        mail.Timeout = 1000000;

        mail.Send("b.soham1991@gmail.com", "soham.elf@gmail.com", "Hi", "via gmail");
        Response.Write("success!");
    }
永远不会执行

Reponse.Write,最终连接超时。我错过了什么?

2 个答案:

答案 0 :(得分:1)

我认为您使用的是错误的端口。

protected void Button1_Click(object sender, EventArgs e)
{
    SmtpClient mail = new SmtpClient();
    mail.UseDefaultCredentials = false;
    mail.Host="smtp.gmail.com";
    mail.Port=587; //new port!
    mail.UseDefaultCredentials = false,
    mail.Credentials=new NetworkCredential("b.soham1991","*******");
    mail.DeliveryMethod = SmtpDeliveryMethod.Network;
    mail.EnableSsl = true;

    mail.Timeout = 1000000;

    mail.Send("b.soham1991@gmail.com", "soham.elf@gmail.com", "Hi", "via gmail");
    Response.Write("success!");
}

此外,请务必使用System.Net.Mail而不是System.Web.Mail

请参阅答案here以获得详细而精确的答案。

答案 1 :(得分:0)

你应该尝试为instace分配标签。

在表单中添加标签。

你可以简单。

labelstatus.text = "success!";

您是否可以向此添加Exception处理程序,以便在mail对象永远不会完成的情况下确切地看出它出错的地方?