Я использую приложение C# для отправки электронной почты.
Итак, сначала я проверяю
public async void LogIn()
{
var credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets
{
ClientId = "-id-",
ClientSecret = "-secret-"
},
new[] { "email", "profile", "https://mail.google.com/" },
"user",
CancellationToken.None
);
await credential.RefreshTokenAsync(CancellationToken.None);
accessToken = credential.Token.AccessToken;
var signature = await GoogleJsonWebSignature.ValidateAsync(credential.Token.IdToken);
username = signature.Email;
}
Я проверяю
var oauth2 = new SaslMechanismOAuth2(username, accessToken);
client.Connect("smtp.gmail.com", 587, SecureSocketOptions.StartTls);
client.Authenticate(oauth2);
Затем я создать сообщение И затем я отправляю их ... и это нормально, но через час или около того (не уверен, что это ровно через час) он дает мне «4.7.0 Connection expired, попробуйте повторно подключиться. o6sm1377557lja.70 - gsmtp».
Итак, я go, чтобы повторить соединение и аутентификацию, но что бы я ни делал (я пытался повторить всю процедуру аутентификации, заменив объект SmtpClient [Mailkil], воссоздав объект oauth, когда метод AUthenticate попадает в него выдает ошибку «334: blabla», blabla является носителем и c. материала, закодированного в Base64.
Пока что единственное решение, которое я нашел, - УДАЛИТЬ сохраненный токен и полностью повторно аутентифицировать его с нуля. Это не очень удобно.
Кто-нибудь знает, как это сделать правильно?
EDIT:
Я читал, что 334 - это, возможно, какой-то запрос на получение учетных данных? это пришло как сообщение об ошибке. IIR C, если вы продолжите попытки авторизации, выдаст ошибку «неправильные учетные данные».