System.Net.Mail.SmtpException: «Почтовый ящик недоступен.Ответ сервера: Запрошенное почтовое действие не выполнено: почтовый ящик недоступен ' - PullRequest
0 голосов
/ 27 сентября 2018

Я получаю это сообщение, поскольку Yahoo внесла изменения в аутентификацию пользователя.Мой код по-прежнему работает, если я использую вариант, предложенный Yahoo, а именно:

Пока вы переключаете приложения или обновляете ваше приложение , вы можете дать старому приложению временный доступ.Только помните, это не предназначено для постоянного доступа, и вы захотите отключить его впоследствии.Включите «Разрешить приложениям, использующим менее безопасный вход». После включения этой функции вы будете получать регулярные оповещения с напоминанием о необходимости ее отключения ...

Мой вопрос заключается в том, как обновить мой кодработать без включения

Разрешить приложениям с менее безопасным входом.

На стороне Yahoo?

Код:

private void Test_Click(object sender, EventArgs e)
{
    MailMessage mail = new MailMessage("userid@yahoo.com", "user@example.com", "Test", "Hello World");

    SmtpClient smtp = new SmtpClient();
    smtp.UseDefaultCredentials = false;
    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
    smtp.EnableSsl = true;
    smtp.Host = "smtp.mail.yahoo.com"; 
    smtp.Port = 587;//I tried 465 as well
    smtp.Credentials = new NetworkCredential( "userid@yahoo.com", "myPassword");

    smtp.Send(mail);
}

1 Ответ

0 голосов
/ 05 октября 2018

Чтобы избежать использования этой опции, вам нужно будет использовать OAuth2 для аутентификации вместо идентификатора пользователя и пароля.

Вам необходимо зарегистрировать свое приложение в Yahoo .Затем выполните рабочий процесс OAuth2:

  • Получить токен запроса от Yahoo
  • Запустите веб-браузер и отправьте пользователя в Yahoo для авторизации вашего приложения и получения ключа авторизации
  • Обменяйте ключ авторизации на токен доступа
  • Сохраните токен доступа где-нибудь и используйте его при входе по SMTP

Вам понадобятся сторонние библиотеки дляэтот.Я не думаю, что SmtpClient поддерживает OAuth, и вы захотите, чтобы библиотека обрабатывала другие детали OAuth для вас.

Здесь - пример того, как OAuth это с MailBee.Net (коммерческая библиотека электронной почты).

...