SmtpClient smtpClient = new SmtpClient();
NetworkCredential basicCredential =
new NetworkCredential("sender@gmail.com", "password");
MailMessage message = new MailMessage();
MailAddress fromAddress = new MailAddress("sender@gmail.com");
smtpClient.EnableSsl = true;
smtpClient.Host = "smtp.gmail.com";
smtpClient.Port = 587;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = basicCredential;
message.From = fromAddress;
message.Subject = "your subject";
//Set IsBodyHtml to true means you can send HTML email.
message.IsBodyHtml = true;
message.Body = "<h1>Hello, this is a demo ... ..</h1>";
message.To.Add("receiver@gmail.com");
try
{
smtpClient.Send(message);
}
catch (Exception ex)
{
//Error, could not send the message
ex.ToString();
}
//问题是这段代码适用于没有电话号码保护的电子邮件。将此代码与通过客户端电话号码保护(验证)的电子邮件一起使用时会发生异常。
其中一个解决方案是使用远程服务器访问客户邮件。
现在我的问题是有另一种解决这个问题的方法吗?除第三方外。
答案 0 :(得分:4)
如果我理解正确,您说谷歌帐户正在使用双因素身份验证。
如果是这种情况,您需要为此创建一个应用程序密码。以您希望双因素身份验证的帐户登录后,转到https://security.google.com/settings/security/apppasswords。
在列表中,在Select App
下选择“其他”并为其指定名称。单击Generate,然后将此密码写为DOWN,因为您只能看到它。您将在身份验证中使用它。它将是16个字符长,空格无关紧要,您可以包含它们或省略它们。我把它们包括在这里只是因为。
NetworkCredential basicCredential =
new NetworkCredential("sender@gmail.com", "cadf afal rqcf cafo");
MailMessage message = new MailMessage();