Mailkit 不使用凭据进行身份验证

Mailkit does not authenticate with credentials

我正在尝试使用 Gmail 帐户发送电子邮件。我可以用 yahoo 发送电子邮件,但是,由于某些未知原因,它不再起作用了。我也发布了一个问题,但没有回复。

在这种情况下,我试图连接到一个 gmail 帐户,以便我可以发送电子邮件,但运气不好,在连接后它失败了。

虽然我有正确的凭据,但它连接成功但根本没有进行身份验证。

这是我遇到的错误。我想提一下凭据是正确的。

{"535: 5.7.8 Username and Password not accepted. Learn more at\n5.7.8  
  https://support.google.com/mail/?p=BadCredentials l17sm22879081wro.77 - gsmtp"}

我应该使用任何证书吗?我确定我的代码有问题。

代码

var message = new MimeMessage();

        message.From.Add(new MailboxAddress(contactModel.Name, "s@gmail.com"));
        // This needs to be put in a configuration file
        message.To.Add(new MailboxAddress("test", "a@gmail.com"));

        message.Subject = $"{contactModel.Name} contacted me!";
        message.Body = new TextPart("plain") {
            Text = contactModel.Message + 
            " Details of sender: " + contactModel.EmailAddress + ", " + contactModel.ContactNumber + " ," + contactModel.Name
        };

        using (var client = new SmtpClient())
        {
            try
            {
                if (!client.IsConnected)
                {
                    await client.ConnectAsync("smtp.gmail.com", 587,false);
                    client.AuthenticationMechanisms.Remove("XOAUTH2");
                }
                if (!client.IsAuthenticated)
                {
                    await client.AuthenticateAsync("s@gmail.com", "password");
                }

                await client.SendAsync(message);
                await client.DisconnectAsync(true);

                return "success";
            }
            catch (SmtpCommandException ex)
            {
                throw;
            }
            catch (SmtpProtocolException ex)
            {
                throw;
            }
            catch (Exception e)
            {
                throw new Exception($"The email from {contactModel.EmailAddress} captured but not sent to the owner");
            }

        }

我在收件箱中收到了这封电子邮件,我该如何绕过它?

您需要做的是在网络浏览器中登录您的 Google 邮件帐户,转到“设置”,然后检查 "Enable less secure apps"。如果您已经登录,我相信 url 会让您到达那里:https://myaccount.google.com/lesssecureapps

第一个:

然后:

  • 通过转到 Gmail Security Settings
  • 生成 16 个符号的密码
  • 使用生成的代码而不是您的密码进行身份验证。