用ASP .Net和Gmail发送电子邮件SMTP
我正在开发ASP .Net网站。
我的一个ASPX页面包含一个按钮。
单击此按钮时,我想通过使用Gmail SMTP服务器发送电子邮件。
我想使用我的Gmail帐户作为凭据。用ASP .Net和Gmail发送电子邮件SMTP
这里是按钮的单击事件处理程序:
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属性告诉我,(翻译从法语到英语):无连接已etablished由于目标计算机拒绝它173.194.67.108:587
我的代码是基于发现代码此页面上:http://www.codeproject.com/Questions/254743/sending-email-in-asp-net-using-smtp-gmail-server
任何帮助,将不胜感激
我已经把我的防病毒程序关闭的RUP的建议和我没有任何异常。
我会在我的防病毒程序中创建一个自定义规则,以允许我的ASP .Net网站和Gmail SMTP服务器之间进行通信。
尝试......
protected void Button1_Click(object sender, EventArgs e)
{
MailMessage mail = new MailMessage();
mail.To.Add("Email ID where email is to be send");
mail.To.Add("Another Email ID where you wanna send same email");
mail.From = new MailAddress("[email protected]");
mail.Subject = "Email using Gmail";
string Body = "Hi, this mail is to test sending mail"+
"using Gmail in ASP.NET";
mail.Body = Body;
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com"; //Or Your SMTP Server Address
smtp.Credentials = new System.Net.NetworkCredential
("[email protected]","YourGmailPassword");
//Or your Smtp Email ID and Password
smtp.EnableSsl = true;
smtp.Send(mail);
}
未指定端口号。这是正常的吗? – user1139666 2013-02-19 17:05:39
s如果你想你可以包含端口号为smtp.port = 587; – coder 2013-02-20 05:30:44
我尝试了端口465,然后587.首先发出超时。其次给凭据错误。但使用25作为港口运作完美!还必须取出smtp.UseDefaultCredentials = false; – dreamerkumar 2013-11-11 18:20:45
无连接已经ETAB lished由于目标计算机拒绝它73.194.67.108:587
尝试其他SMTP端口:465
我遇到了另一个异常,通知我超时 – user1139666 2013-02-19 17:04:59
你可以连接到你的ASP.NET代码之外的服务器和端口吗?例如'telnet smtp.gmail.com 587'或使用[PuTTY](http://www.chiark.greenend.org.uk/~sgtatham/putty/)'putty -raw smtp.gmail.com 587'。它适用于我从这里(虽然我没有尝试使用SSL) – Rup 2013-02-19 10:06:37
1.证书 - 您不应该使用您的电子邮件作为登录。我的意思是如果你的电子邮件是“[email protected]” - 你的Credentails登录应该是“mymail”,而不是“[email protected]”2. l_mail.To.Add(新的MailAddress(l_address)) – 2013-02-19 10:10:31
@Rup I试图通过使用telnet连接到smtp.gmail.com,但我得到错误消息:连接被拒绝。我将587指定为端口号,并将其指定为协议。我没有尝试使用telnet进行连接,因为它没有通知连接成功或失败。 – user1139666 2013-02-19 17:00:33