Grupo Microsistemas Ответов: 2

Ошибка отправки электронной почты с помощью oauth2 gmail


Я пытаюсь отправить электронное письмо с помощью Oauth2, но получаю ошибку при аутентификации моего пользователя. Это ошибка "необработанное исключение типа 'MailKit.Security.AuthenticationException' произошло в mscorlib.dll

Дополнительная информация: 334: eyJzdGF0dXMiOiI0MDAiLCJzY2hlbWVzijoiqmvhcmvyiiwic2nvcguioijodhrwczovl21hawwuz29vz2xllmnvbs8ifq== "

Вот мой код:
using (var stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
            {
                string credPath = "token.json";
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user@gmail.com",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
                Console.WriteLine("Credential file saved to: " + credPath);
            }
            var service = new GmailService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });
 var message = new MimeMessage();
            message.From.Add(new MailboxAddress("User", "user@gmail.com"));
            message.To.Add(new MailboxAddress("Test", "test@gmail.com"));
            message.Subject = "Test";
            message.Body = new TextPart("plain")
            {
                Text = "Test"
            };
            
            using (var client = new MailKit.Net.Smtp.SmtpClient())
            {
                client.Connect("smtp.gmail.com", 587);
                // use the access token 
                var oauth2 = new MailKit.Security.SaslMechanismOAuth2(credential.UserId, credential.Token.AccessToken);
                client.Authenticate(oauth2);
                client.Send(message);
                client.Disconnect(true);
            }


Что я уже пробовал:

Я попытался активировать "меньшие параметры безопасности" gmail, но все равно не работает

2 Ответов

Рейтинг:
2

Garth J Lancaster

334 указывает на какую - то ошибку аутентификации-я ожидал бы дополнительной информации в ответе, намекающей на точную проблему


Рейтинг:
2

MadMyche

Я бы рекомендовал вам прочитать следующую страницу и убедиться, что у вас все настроено правильно; похоже, пример кода MailKit может быть не таким, как предоставляет Google
MailKit Issue #962: AuthenticationException 334[^]

Он также рассказал вам, как расшифровать дополнительная информация, который является просто Base64

Base64.Decode(Дополнительная Информация)
{"статус":"400","схемы":"предъявитель","сфера применения":"https://mail.google.com/"}