用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

任何帮助,将不胜感激

+0

你可以连接到你的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

+0

1.证书 - 您不应该使用您的电子邮件作为登录。我的意思是如果你的电子邮件是“[email protected]” - 你的Credentails登录应该是“mymail”,而不是“[email protected]”2. l_mail.To.Add(新的MailAddress(l_address)) – 2013-02-19 10:10:31

+0

@Rup I试图通过使用telnet连接到smtp.gmail.com,但我得到错误消息:连接被拒绝。我将587指定为端口号,并将其指定为协议。我没有尝试使用telnet进行连接,因为它没有通知连接成功或失败。 – user1139666 2013-02-19 17:00:33

我已经把我的防病毒程序关闭的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); 
} 
+0

未指定端口号。这是正常的吗? – user1139666 2013-02-19 17:05:39

+0

s如果你想你可以包含端口号为smtp.port = 587; – coder 2013-02-20 05:30:44

+0

我尝试了端口465,然后587.首先发出超时。其次给凭据错误。但使用25作为港口运作完美!还必须取出smtp.UseDefaultCredentials = false; – dreamerkumar 2013-11-11 18:20:45

无连接已经ETAB lished由于目标计算机拒绝它73.194.67.108:587

尝试其他SMTP端口:465

+0

我遇到了另一个异常,通知我超时 – user1139666 2013-02-19 17:04:59