В моем приложении MVC4 я использую SmtpClient
для отправки электронной почты через Gmail smtp.gmail.com
SMTP-сервер.
Я установил свой файл Web.Config со следующими настройками:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network enableSsl="true"
defaultCredentials="false"
host="smtp.gmail.com"
port="587"
userName="[email protected]"
password="xxMyPasswordxx" />
</smtp>
</mailSettings>
</system.net>
Метод, который использует SmtpClient и отправляет сообщение электронной почты, выглядит следующим образом:
public void SendMail(string fromDisplayName, string fromEmailAddress, string toEmailAddress, string subject, string body)
{
MailAddress from = new MailAddress(fromEmailAddress, fromDisplayName);
MailAddress to = new MailAddress(toEmailAddress);
MailMessage mailMessage = new MailMessage(from, to);
mailMessage.Body = body;
mailMessage.Subject = subject;
SmtpClient client = new SmtpClient();
//client.UseDefaultCredentials = false;
client.Send(mailMessage);
}
Приведенный выше код работает так, как ожидалось, и это нормально. Что меня смущает прокомментированная строка client.UseDefaultCredentials = false;
- Если бы я раскомментировал эту строку, я получу сообщение об исключении, в котором говорится:
Для SMTP-сервера требуется безопасное соединение или клиент не был проверку подлинности. Ответ сервера: 5.5.1 Требуется аутентификация.
Что еще, не имеет значения, если я устанавливаю свойство UseDefaultCredentials
на true
или false
, я все равно получаю сообщение об исключении. Единственный способ избежать исключения сообщения - удалить всю строку.
Это нормальное поведение? Можете ли вы объяснить, почему я получаю сообщение об исключении?