我们可以使用gmail帐户从* localhost * (本地机器)在asp.net网站发送电子邮件吗?我正在尝试,但非常不成功。它在托管上工作正常,但不能在我的机器上工作。
我的机器上有windows server 2003,我在防火墙中添加了端口587和465例外。在我的Gmail帐户中,我还启用了POP和IMAP。有人建议使用端口465,其他人则应使用端口587。我试过两个以下是我的结果:
以下是我的代码,请指导我错误的地方或我应该做的事情。
感谢
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;
}
}
答案 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?我认为它可能是一个网络问题,虽然你确实说你的防火墙是敞开的,但它不是你和谷歌之间唯一的跳跃。