Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ASP.Net和Gmail SMTP发送电子邮件_Asp.net_Email_Smtp_Gmail - Fatal编程技术网

使用ASP.Net和Gmail SMTP发送电子邮件

使用ASP.Net和Gmail SMTP发送电子邮件,asp.net,email,smtp,gmail,Asp.net,Email,Smtp,Gmail,我正在开发一个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 StringB

我正在开发一个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\u smtp.Send(l\u mail)失败。
引发SMTP异常,InnerException属性通知我(从法语到英语的翻译):由于目标计算机已拒绝连接,因此未建立任何连接173.194.67.108:587

我的代码基于此页面上的代码:

任何帮助都将不胜感激

试试这个

 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("YourGmailID@gmail.com");
 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
   ("YourUserName@gmail.com","YourGmailPassword");
//Or your Smtp Email ID and Password
 smtp.EnableSsl = true;
 smtp.Send(mail);
 }

未建立连接,因为目标计算机拒绝了它
73.194.67.108:587


尝试另一个SMTP端口:
465

我已经按照Rup的建议关闭了防病毒程序,并且没有任何异常。

我将在防病毒程序中创建一个自定义规则,以允许我的ASP.Net网站和Gmail SMTP服务器之间进行通信。

您能否从ASP.Net代码之外的计算机连接到该服务器和端口?e、 g.
telnet smtp.gmail.com 587
或使用
putty-raw smtp.gmail.com 587
。它在这里对我有效(尽管我不尝试SSL)1。凭据-您不应使用电子邮件作为登录。我是说如果你的电子邮件是“mymail@gmail.com-您的Credentail登录名应为“mymail”,而不是mymail@gmail.com" 2. l_mail.To.Add(new MailAddress(l_address))@Rup我试图使用telnet连接到smtp.gmail.com,但收到错误消息:连接被拒绝。我指定587作为端口号,raw作为协议。我没有尝试使用telnet进行连接,因为它不会通知成功或失败的连接。@AlexOvechkin我已经听从了你的两个建议,但我仍然收到了一封电子邮件exception@user1139666如果连接成功,您将从Google服务器收到一条消息,例如
220 mx.Google.com ESMTP gy2sm28975989wib.3-gsmtp
如果您不这样做,它将超时。465端口工作吗?端口25?这台机器上有出站防火墙吗?你能暂时关闭防火墙吗?谷歌可能会阻止你的子网-你能从别处试试吗?我遇到了另一个异常,通知我超时,没有指定端口号。这正常吗?如果你想要,你可以将端口号包括为smtp。端口=587;我试过465端口,然后是587端口。第一次超时。第二个错误。但是使用25作为端口工作得非常好!还必须删除smtp.UseDefaultCredentials=false;