使用 asp.net 和 C# 向 Gmail 帐户发送电子邮件以进行激活

Send email using asp.net and C# to Gmail account for acctivation

初学C#,共鸣开始学习 我尝试发送 Google 邮件,但出现此错误 请帮我完成我的工作

(SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 身份验证 Required.Learn 更多信息)

using (MailMessage mm = new MailMessage("sender@gmail.com", txtEmail.Text))
    {
        mm.Subject = "Account Activation";
        string body = "Hello " + txtUsername.Text.Trim() + ",";
        body += "<br /><br />Please click the following link to activate your account";
        body += "<br /><a href = '" + Request.Url.AbsoluteUri.Replace("CS.aspx", "CS_Activation.aspx?ActivationCode=" + activationCode) + "'>Click here to activate your account.</a>";
        body += "<br /><br />Thanks";
        mm.Body = body;
        mm.IsBodyHtml = true;
        SmtpClient smtp = new SmtpClient();
        smtp.Host = "smtp.gmail.com";
        smtp.EnableSsl = true;
        NetworkCredential NetworkCred = new NetworkCredential("sender@gmail.com", "<password>");
        smtp.UseDefaultCredentials = true;
        smtp.Credentials = NetworkCred;
        smtp.Port = 587;
        smtp.Send(mm);
    }

对于 gmail,将 EnableSSL 设置为 true 并将端口设置为 587 是正确的,因为 SmtpClient class 不适用于端口 465。请参阅本文 http://www.codeproject.com/KB/IP/GmailSmtp.aspx?q=SmtpClient+ssl+yahoo 我认为问题是 smtp.UseDefaultCredentials = true。 尝试删除此行。

你好。

您应该收到一封来自 google 的电子邮件,说明他们已经阻止了安全性较低的应用程序的访问。

您需要设置 UseDefaultCredentials = false 并且需要允许来自 https://www.google.com/settings/security/lesssecureapps?rfn=27&rfnc=1&asae=2&anexp=lbe3-R2_C

的安全性较低的应用程序进行访问

我已经这样做了,我的应用程序可以使用 gmail 发送电子邮件。

To Send email using Gmail server we need to set following thing.Use these namespaces in C#.


     1. using System.IO;
     2. using System.Net;
     3. using System.Net.Mail;

MailMessage Class Properties

Following are the required properties of the MailMessage class.

 - From – Sender’s email address 
 - To – Recipient(s) Email Address 
 - CC –Carbon Copies (if any) 
 - BCC – Blind Carbon Copies (if any) 
 - subject –Subject of the Email  
 - Body – Body of the Email 
 - IsBodyHtml – Specify whether body contains text or HTML tag.
 - Attachments – Attachments(if any)
 - ReplyTo – ReplyTo Email address.

 SMTP Class Properties

  Following are the properties of the SMTP class.
  - Host – SMTP Server URL (Gmail: smtp.gmail.com)
  - EnableSsl – Specify whether your host accepts SSL Connections (Gmail: True)
  - UseDefaultCredentials – Set to True in order to allow authentication based on the Credentials of the Account used to send emails
  - Credentials – Input valid username and password
  - Port – Assign port number for (Gmail: 587)

Finally here is your Code.  

       using (MailMessage mm = new MailMessage(from, to))
        {
            mm.Subject = "Account Activation";
            string body = "Hello " + your username.Trim() + ",";
            body += "<br /><br />Please click the following link to activate your account";
            body += "<br /><a href = '" + new Uri("http://www.google.com", true).AbsoluteUri + "<a>Click here to activate your account.</a>";
            body += "<br /><br />Thanks";
            mm.Body = body;
            mm.IsBodyHtml = true;
            SmtpClient smtp = new SmtpClient();
            smtp.Host = "smtp.gmail.com";
            smtp.EnableSsl = true;
            NetworkCredential NetworkCred = new NetworkCredential(username, password);
            smtp.UseDefaultCredentials = true;
            smtp.Credentials = NetworkCred;
            smtp.Port = 587;
            smtp.Send(mm);
        }

如果您遇到这样的错误:-

-SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应是:5.5.1 需要身份验证。

然后您执行以下步骤:- 点击下方link。 - https://www.google.com/settings/security/lesssecureapps

单击单选按钮打开。

它会起作用。

代码已经过测试。谢谢..

您正在为您的 gmail 帐户定义登录凭据:

NetworkCredential NetworkCred = new NetworkCredential("sender@gmail.com", "<password>");

但是您通过将 UseDefaultCredentials 属性 设置为 true 来覆盖这些详细信息。

smtp.UseDefaultCredentials = true;

您需要删除该行代码,因为它告诉您的应用程序尝试使用您的 windows 凭据登录 gmail。或者,如果这不起作用,您可以在提供新的 NetworkCredentials 之前将其设置为 false:

smtp.UseDefaultCredentials = false;
NetworkCredential NetworkCred = new NetworkCredential("sender@gmail.com", "<password>");

之后,如果您继续收到错误,您将需要进入您的 gmail 帐户安全设置并允许安全性较低的应用程序。

你好,我的朋友,我刚刚遇到这个错误,只是你没有更改任何发件人@gmail.com和密码,只是输入你创建的 gmail 和密码,就像你在我下面的修改实际上代码没有错只是把你创建的电子邮件然后是那个 gmail 的密码,实际上上面所有的答案都是正确的但是你必须删除那个“<>”到你的密码并且你没有改变发件人@gmail.com到你各自的gmail......

      NetworkCredential NetworkCred = new NetworkCredential("sender@gmail.com", "<password>");


      NetworkCredential NetworkCred = new NetworkCredential("yourgmail.com", "yourpassword");