【发布时间】:2013-02-03 23:18:10
【问题描述】:
我正在开发一个 ASP .Net 网站。
我的一个 ASPX 页面包含一个按钮。
单击此按钮后,我想使用 Gmail SMTP 服务器发送电子邮件。
我想使用我的 Gmail 帐户作为凭据。
这是按钮的点击事件处理程序:
protected void m_myButton_Click(object p_sender, EventArgs p_args)
{
string l_subject = "My subject";
StringBuilder l_builder = new StringBuilder();
// ...
string l_body = l_builder.ToString();
string l_host = ConfigurationManager.AppSettings["SmtpHost"];
int l_port = int.Parse(ConfigurationManager.AppSettings["SmtpPort"]);
NameValueCollection l_smtpAccount = (NameValueCollection)ConfigurationManager.GetSection("smtpAccount");
string l_address = l_smtpAccount["SmtpAddress"];
string l_password = l_smtpAccount["SmtpPassword"];
MailMessage l_mail = new MailMessage();
l_mail.From = new MailAddress(l_address);
l_mail.To.Add(l_address);
l_mail.Subject = l_subject;
l_mail.Body = l_body;
SmtpClient l_smtp = new SmtpClient();
l_smtp.Host = l_host; // l_host = "smtp.gmail.com"
l_smtp.Port = l_port; // l_port = 587
l_smtp.EnableSsl = true;
l_smtp.UseDefaultCredentials = false;
l_smtp.Credentials = new NetworkCredential(l_address, l_password);
l_smtp.Send(l_mail);
}
命令行 l_smtp.Send(l_mail) 失败。
引发 SMTP 异常,InnerException 属性通知我(从法语翻译成英语):没有建立连接,因为目标计算机拒绝了它 173.194.67.108:587
我的代码基于此页面上的代码:http://www.codeproject.com/Questions/254743/sending-email-in-asp-net-using-smtp-gmail-server
任何帮助将不胜感激
【问题讨论】:
-
您可以在 ASP.NET 代码之外从您的计算机连接到该服务器和端口吗?例如
telnet smtp.gmail.com 587或使用 PuTTYputty -raw smtp.gmail.com 587。它从这里开始对我有用(虽然我没有尝试 SSL) -
1.凭据 - 您不应该使用您的电子邮件作为登录名。我的意思是,如果您的电子邮件是“mymail@gmail.com” - 您的 Credentails 登录名应该是“mymail”,而不是“mymail@gmail.com” 2. l_mail.To.Add(new MailAddress(l_address))
-
@Rup 我尝试使用 telnet 连接到 smtp.gmail.com,但收到错误消息:连接被拒绝。我已将 587 指定为端口号,并将原始指定为协议。我没有尝试使用 telnet 进行连接,因为它不会通知连接成功或失败。
-
@AlexOvechkin 我已经听从了你的两个建议,但我仍然遇到异常
-
@user1139666 如果连接成功,您将收到来自 Google 服务器的消息,例如
220 mx.google.com ESMTP gy2sm28975989wib.3 - gsmtp,如果你不这样做,它就会超时。 465端口能用吗? 25端口?您在这台机器上是否有任何出站防火墙 - 您可以尝试暂时关闭防火墙吗? Google 可能会阻止您的子网 - 您可以从其他地方尝试吗?