У меня есть служба C# Windows, которая отправляет электронное письмо с помощью MailKit при запуске службы (или в случае возникновения ошибки). Это работает безупречно уже много лет. В какой-то момент 23 11 года он перестал работать с такой ошибкой:
535: 5.7.139 Authentication unsuccessful, the request did not meet the criteria to be authenticated successfully. Contact your administrator. [LO4P265CA0130.GBRP265.PROD.OUTLOOK.COM 2025-11-25T08:52:57.800Z 08DE2BB235820936]
Странно то, что один и тот же код, использующий одни и те же учетные данные, работает на других машинах. Я думал, что это может быть что-то внешнее, если домен дает сбой, но это тоже не так, но опять же, он дает сбой на некоторых машинах, но не на всех.
Я создал еще одну учетную запись электронной почты, и она работает так, как и следовало ожидать, даже на машинах, где она дает сбой с исходной учетной записью.
Это код, который я извлек в простой .exe-файл, чтобы я мог протестировать его на любом сервере... это очень просто, но, как я понимаю скажем, одни и те же учетные данные работают на некоторых серверах, но не на других.
var email = new MimeMessage();
email.From.Add(new MailboxAddress("Connect 2", "username@domain.co.uk"));
email.To.Add(new MailboxAddress("Mark J", "someone@domain.co.uk"));
email.Subject = "Email send test";
email.Body = new TextPart("html")
{
Text = ""
};
try
{
using (var client = new SmtpClient())
{
// Enforce TLS 1.2+
client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;
client.Connect("smtp.office365.com", 587, MailKit.Security.SecureSocketOptions.StartTls);
client.Authenticate("username@domain.co.uk", "password");
client.Send(email);
client.Disconnect(true);
}
MessageBox.Show("Email sent");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... me-servers