当发送帐户使用两因素身份验证时,如何通过Gmail和SmtpClient发送电子邮件?

Mah*_*our 1 c# asp.net smtp

            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();
            }
Run Code Online (Sandbox Code Playgroud)

//问题是,此代码适用于没有电话号码保护功能的gmail。将此代码与通过客户电话号码保护(验证)的Gmail一起使用时,会发生异常。

解决方案之一是使用远程服务器访问客户端邮件。

现在我的问题是还有另一种方法可以解决此问题吗?除了第三方。

Mar*_*k S 5

如果我正确理解您的意思,是说Google帐户正在使用两因素身份验证。

在这种情况下,您需要为此创建一个应用程序密码。以您要进行双重身份验证的帐户身份登录后,转到https://security.google.com/settings/security/apppasswords

在列表中,Select App选择“其他”并为其命名。单击“生成”,然后将此密码记为“ DOWN”,因为您只会一次看到该密码。您将在身份验证中使用它。长度为16个字符,空格无关紧要,您可以包含或忽略它们。我之所以将它们包括在这里是因为。

NetworkCredential basicCredential =
            new NetworkCredential("sender@gmail.com", "cadf afal rqcf cafo");
MailMessage message = new MailMessage();
Run Code Online (Sandbox Code Playgroud)