У меня есть исключение при отправке электронной почты с использованием C # - PullRequest
0 голосов
/ 09 сентября 2018

Я создаю метод для отправки электронной почты, например:

public async Task SendEmailCC(string body, string subject, List<string> mainRecievers, List<string> receivers)
{
    SmtpClient client = new SmtpClient("smtp-mail.outlook.com")
                            {
                                 UseDefaultCredentials = true,
                                 Port = 587,
                                 EnableSsl = true,
                                 DeliveryMethod = SmtpDeliveryMethod.Network,
                                 Credentials = new NetworkCredential("Test@gmail.com", "MyMailPassword")
                            };

    MailMessage mailMessage = new MailMessage { From = new MailAddress("job@test.org") };

    foreach (var reciever in mainRecievers)
    {
        mailMessage.To.Add(reciever);
    }

    foreach (var item in receivers)
    {
        mailMessage.CC.Add(item);
    }

    mailMessage.Body = body;
    mailMessage.IsBodyHtml = true;
    mailMessage.Subject = subject;

    await client.SendMailAsync(mailMessage);
}

Для теста я отправил электронное письмо самому себе, но я не получил письмо. как я могу найти мою проблему?

Мое исключение - аутентификация соединения.

1 Ответ

0 голосов
/ 09 сентября 2018

Почтовый сервер был google, и я использовал OutLookSmtp, к этому разделу моего кода я это и изменил. как:

SmtpClient client = new SmtpClient("smtp-mail.outlook.com")

И изменилось:

SmtpClient client = new SmtpClient("smtp.gmail.com")

После этого я получаю это исключение:

Для SMTP-сервера требуется безопасное соединение, или клиент не прошел проверку подлинности. Ответ сервера был: 5.5.1 Требуется аутентификация ", чем ошибка может произойти из-за следующих случаев.

Для этой проблемы я пробую это:

случай 1: неправильный пароль

вариант 2: при попытке войти из какого-либо приложения

вариант 3: при попытке войти из домена, отличного от вашего часового пояса / домена / компьютера (в большинстве случаев это происходит при отправке почты из кода)

Существует решение для каждого

решение для случая 1: введите правильный пароль.

решение 1 для случая 2: перейдите в настройки безопасности по следующей ссылке https://www.google.com/settings/security/lesssecureapps и включите менее безопасные приложения. Так что вы сможете войти из всех приложений.

решение 2 для случая 2: (см. https://stackoverflow.com/a/9572958/52277) включить двухфакторную аутентификацию (так называемая двухэтапная проверка), а затем сгенерировать пароль для конкретного приложения. Используйте этот новый пароль для аутентификации через SMTP.

решение 1 для случая 3: (Это может быть полезно), вам нужно просмотреть действие. но проверка активности не будет полезна из-за последних стандартов безопасности, ссылка не будет полезна. Так что попробуйте следующий случай.

решение 2 для случая 3: если вы разместили свой код где-то на рабочем сервере и если у вас есть доступ к производственному серверу, подключитесь к производственному серверу с удаленного рабочего стола и попробуйте один раз войти в систему из браузера рабочего сервера. , Это добавит исключение для входа в Google, и вам будет разрешено войти из кода.

Но что, если у вас нет доступа к производственному серверу. попробуйте решение 3

решение 3 для случая 3: Вы должны включить логин из другого часового пояса / ip для своей учетной записи Google.

для этого перейдите по ссылке https://g.co/allowaccess и разрешите доступ, нажав кнопку продолжения.

И это все. Ну вот. Теперь вы сможете войти с любого компьютера и с помощью любого приложения в свою учетную запись Google

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...