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
第一个:
- 转至 Google Support: Protect your account with 2-Step Verification 并启用它,为您的 Gmail 帐户启用双重身份验证。
然后:
- 通过转到 Gmail Security Settings
生成 16 个符号的密码
- 使用生成的代码而不是您的密码进行身份验证。
我正在尝试使用 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
第一个:
- 转至 Google Support: Protect your account with 2-Step Verification 并启用它,为您的 Gmail 帐户启用双重身份验证。
然后:
- 通过转到 Gmail Security Settings 生成 16 个符号的密码
- 使用生成的代码而不是您的密码进行身份验证。