MailKit и OAuth2 для Gmail SMTP — ошибка 5.7.8 BadCredentials ⇐ C#
MailKit и OAuth2 для Gmail SMTP — ошибка 5.7.8 BadCredentials
Я пытаюсь использовать mailkit для отправки электронных писем через учетную запись Gmail. Я продолжаю получать ошибку 5.7.8 BadCredentials.
Мои учетные данные Oauth2 в Google указывают имя проекта «EmailTesting» для настольного приложения, однако я не указываю эту строку нигде в своем коде. Это проблема? Файл Credentials.json, указанный в коде, загружается непосредственно со страницы учетных данных oauth2.
ОБНОВЛЕНИЕ: Теперь используется метод SaslMechanismOAuthBearer, поскольку GMAIL указывает OAuthBearer. Также в конце отображается smtp.log.
Мой код выглядит следующим образом:
public async Task Test4() { учетные данные UserCredential; используя (var поток = новый FileStream("credentials.json", FileMode.Open, FileAccess.Read)) { creds = ждут GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.FromStream(поток).Секреты, новый [] { GmailService.Scope.GmailSend }, "donotreply@INSERT_DOMAIN_HERE", CancellationToken.None); если (creds.Token.IsExpired(SystemClock.Default)) { ждут creds.RefreshTokenAsync(CancellationToken.None); } } Клиент MailKit.Net.Smtp.SmtpClient; клиент = новый MailKit.Net.Smtp.SmtpClient(); client.Connect("smtp.gmail.com", 465, MailKit.Security.SecureSocketOptions.SslOnConnect); client.Authenticate(new SaslMechanismOAuthBearer(creds.UserId, creds.Token.AccessToken)); вар строитель = новый MimeKit.BodyBuilder(); builder.TextBody = "Это тело письма"; MimeMessage почта = новый MimeKit.MimeMessage(); mail.From.Add(MailboxAddress.Parse("donotreply@INSERT_DOMAIN_HERE")); mail.To.Add(MailboxAddress.Parse("erict@INSERT_DOMAIN_HERE")); mail.Subject = "это тема"; mail.Body = builder.ToMessageBody(); ждать client.SendAsync(mail); client.Disconnect(истина); клиент.Расположить(); почта.Dispose(); } В первый день, когда я запустил это, оно перенаправило на веб-страницу, чтобы donotreply@INSERT_DOMAIN_HERE мог дать приложению разрешение на отправку электронных писем. Однако после этого и с тех пор выдавалась ошибка 5.7.8 «Имя пользователя и пароль не приняты». Вчера весь день ссылка Google 5.7.8 «Узнать больше» предлагала мне добавить резервный телефон, хотя я сделал это более 24 часов назад и подтвердил. По состоянию на сегодняшнее утро Google больше не добавляет это предложение, но все равно выдает ошибку 5.7.8. Вот вывод журнала:
S: 220 smtp.gmail.com ESMTP r12-20020a05621410cc00b0066d132b1c8bsm4912733qvs.102 - gsmtp C: Новый ноутбук EHLO S: 250-smtp.gmail.com к вашим услугам, [] S: РАЗМЕР 250 35882577 С: 250-8БИТМИМ С: 250-СТАРТЛС S: 250-УЛУЧШЕННЫЕ СТАТУСКОДЫ S: 250-ТРУБОПРОВОД. S: 250 – РАЗБИВАНИЕ С: 250 СМТПУТФ8 C: СТАРТЛС S: 220 2.0.0 Готов к запуску TLS C: Новый ноутбук EHLO S: 250-smtp.gmail.com к вашим услугам, [] S: РАЗМЕР 250 35882577 С: 250-8БИТМИМ S: 250-AUTH ВХОД PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH S: 250-УЛУЧШЕННЫЕ СТАТУСКОДЫ S: 250-ТРУБОПРОВОД. S: 250 – РАЗБИВАНИЕ С: 250 СМТПУТФ8 C: ПОДТВЕРЖДАЮЩИЙ ******** S:334 eyJzdGF0dXMiOiJpbnZhbGlkX3JlcXVlc3QiLCJzY29wZSI6Imh0dHBzOi8vbWFpbC5nb29nbGUuY29tLyJ9 С: ******** S: 535-5.7.8 Имя пользователя и пароль не приняты. Узнайте больше на...
Я пытаюсь использовать mailkit для отправки электронных писем через учетную запись Gmail. Я продолжаю получать ошибку 5.7.8 BadCredentials.
Мои учетные данные Oauth2 в Google указывают имя проекта «EmailTesting» для настольного приложения, однако я не указываю эту строку нигде в своем коде. Это проблема? Файл Credentials.json, указанный в коде, загружается непосредственно со страницы учетных данных oauth2.
ОБНОВЛЕНИЕ: Теперь используется метод SaslMechanismOAuthBearer, поскольку GMAIL указывает OAuthBearer. Также в конце отображается smtp.log.
Мой код выглядит следующим образом:
public async Task Test4() { учетные данные UserCredential; используя (var поток = новый FileStream("credentials.json", FileMode.Open, FileAccess.Read)) { creds = ждут GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.FromStream(поток).Секреты, новый [] { GmailService.Scope.GmailSend }, "donotreply@INSERT_DOMAIN_HERE", CancellationToken.None); если (creds.Token.IsExpired(SystemClock.Default)) { ждут creds.RefreshTokenAsync(CancellationToken.None); } } Клиент MailKit.Net.Smtp.SmtpClient; клиент = новый MailKit.Net.Smtp.SmtpClient(); client.Connect("smtp.gmail.com", 465, MailKit.Security.SecureSocketOptions.SslOnConnect); client.Authenticate(new SaslMechanismOAuthBearer(creds.UserId, creds.Token.AccessToken)); вар строитель = новый MimeKit.BodyBuilder(); builder.TextBody = "Это тело письма"; MimeMessage почта = новый MimeKit.MimeMessage(); mail.From.Add(MailboxAddress.Parse("donotreply@INSERT_DOMAIN_HERE")); mail.To.Add(MailboxAddress.Parse("erict@INSERT_DOMAIN_HERE")); mail.Subject = "это тема"; mail.Body = builder.ToMessageBody(); ждать client.SendAsync(mail); client.Disconnect(истина); клиент.Расположить(); почта.Dispose(); } В первый день, когда я запустил это, оно перенаправило на веб-страницу, чтобы donotreply@INSERT_DOMAIN_HERE мог дать приложению разрешение на отправку электронных писем. Однако после этого и с тех пор выдавалась ошибка 5.7.8 «Имя пользователя и пароль не приняты». Вчера весь день ссылка Google 5.7.8 «Узнать больше» предлагала мне добавить резервный телефон, хотя я сделал это более 24 часов назад и подтвердил. По состоянию на сегодняшнее утро Google больше не добавляет это предложение, но все равно выдает ошибку 5.7.8. Вот вывод журнала:
S: 220 smtp.gmail.com ESMTP r12-20020a05621410cc00b0066d132b1c8bsm4912733qvs.102 - gsmtp C: Новый ноутбук EHLO S: 250-smtp.gmail.com к вашим услугам, [] S: РАЗМЕР 250 35882577 С: 250-8БИТМИМ С: 250-СТАРТЛС S: 250-УЛУЧШЕННЫЕ СТАТУСКОДЫ S: 250-ТРУБОПРОВОД. S: 250 – РАЗБИВАНИЕ С: 250 СМТПУТФ8 C: СТАРТЛС S: 220 2.0.0 Готов к запуску TLS C: Новый ноутбук EHLO S: 250-smtp.gmail.com к вашим услугам, [] S: РАЗМЕР 250 35882577 С: 250-8БИТМИМ S: 250-AUTH ВХОД PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH S: 250-УЛУЧШЕННЫЕ СТАТУСКОДЫ S: 250-ТРУБОПРОВОД. S: 250 – РАЗБИВАНИЕ С: 250 СМТПУТФ8 C: ПОДТВЕРЖДАЮЩИЙ ******** S:334 eyJzdGF0dXMiOiJpbnZhbGlkX3JlcXVlc3QiLCJzY29wZSI6Imh0dHBzOi8vbWFpbC5nb29nbGUuY29tLyJ9 С: ******** S: 535-5.7.8 Имя пользователя и пароль не приняты. Узнайте больше на...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Аутентификация Microsoft SMTP OAuth2 на C# с MailKit всегда завершается сбоем
Anonymous » » в форуме C# - 0 Ответы
- 30 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Аутентификация Microsoft SMTP OAuth2 на C# с MailKit всегда завершается сбоем
Anonymous » » в форуме C# - 0 Ответы
- 22 Просмотры
-
Последнее сообщение Anonymous
-