无法使用gmail帐户在asp.net中发送电子邮件

时间:2011-03-16 08:15:00

标签: c# asp.net .net-3.5 gmail

我们可以使用gmail帐户从* localhost * (本地机器)在asp.net网站发送电子邮件吗?我正在尝试,但非常不成功。它在托管上工作正常,但不能在我的机器上工作。

我的机器上有windows server 2003,我在防火墙中添加了端口587和465例外。在我的Gmail帐户中,我还启用了POP和IMAP。有人建议使用端口465,其他人则应使用端口587。我试过两个以下是我的结果:

  1. 使用端口465需要时间,最后会显示操作已超时的消息。 falure
  2. 使用端口587它不需要时间,显示消息“failuer发送电子邮件”内部考虑“无法建立连接,因为目标机器主动拒绝它72.14.213.109:587”
  3. 以下是我的代码,请指导我错误的地方或我应该做的事情。

    感谢

    public static bool SendMail(string gMailAccount, string password, string to, string subject, string message)
    {
        try
        {
            NetworkCredential loginInfo = new NetworkCredential(gMailAccount, password);
            MailMessage msg = new MailMessage();
            msg.From = new MailAddress(gMailAccount);
            msg.To.Add(new MailAddress(to));
            msg.Subject = subject;
            msg.Body = message;
            msg.IsBodyHtml = true;
            SmtpClient client = new SmtpClient("smtp.gmail.com");
            client.EnableSsl = true;
            client.UseDefaultCredentials = false;
            client.Credentials = loginInfo;
            client.Port = 587;
            client.Send(msg);
    
            return true;
        }
        catch (Exception e)
        {
    
            return false;
        }
    
    }
    

3 个答案:

答案 0 :(得分:0)

我使用smtp.yandex.com。可能需要更改您的Gmail帐户中的设置。

答案 1 :(得分:0)

尝试这个冷杉:添加:

 client.DeliveryMethod = SmtpDeliveryMethod.Network;

如果这没有帮助,您的mailaddress可能不完整,请使用

var fromAddress = new MailAddress("from@gmail.com", "From Name"); 

并在凭证中使用

Credentials = new NetworkCredential(fromAddress.Address, ....

希望有所帮助

答案 2 :(得分:0)

这个SmtpClient一直对我有用:

new SmtpClient
     {
        Host = "smtp.gmail.com",
        Port = 587,
        EnableSsl = true,
        UseDefaultCredentials = false,
        Credentials = new NetworkCredential("noreply@my_domain.com", "password")
     };

它与你的相匹配。

您是否可以通过任何其他应用程序联系端口587上的smtp.gmail.com?也许在那个端口上telnet?我认为它可能是一个网络问题,虽然你确实说你的防火墙是敞开的,但它不是你和谷歌之间唯一的跳跃。