Я создаю способ отправки электронной почты, например:
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("[email protected]", "MyMailPassword")
};
MailMessage mailMessage = new MailMessage { From = new MailAddress("[email protected]") };
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);
}
Для тестирования я отправил себе электронное письмо, но не получил его. как мне найти свою проблему?
Мое исключение - авторизация подключения.
Убедитесь, что ваш Gmail настроен правильно. Т.е. правильный порт и настройки в настройках учетной записи.
@selmaohneh, хорошо, я попробую.
@Amirhosein Проверьте мой Asnwer, пожалуйста.
Почтовый сервер был Google, и я использовал OutLookSmtp. В этом разделе моего кода у меня есть это, и я изменил его. нравиться:
SmtpClient client = new SmtpClient("smtp-mail.outlook.com")
И изменилось:
SmtpClient client = new SmtpClient("smtp.gmail.com")
После этого я получаю это исключение:
The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required", than the error might occur due to following cases.
Для этой проблемы я пробую это:
случай 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 с любого компьютера и с помощью любого приложения.
Подробно опишите исключение.