Невозможно использовать Gmail smtp из Azure Cloud Service
Мой код для отправки электронной почты через Gmail smtp:
SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("my_user_name", "my_password");
MailMessage message =
new MailMessage(new MailAddress("[email protected]"), new MailAddress("[email protected]"));
message.Body = "body";
message.Subject = "subject";
client.Send(message);
Код работает на моей локальной машине, и когда я публикую на Azure как "Веб-сайт".
НО, когда я публикую в "Облачной службе" , я получаю это исключение:
System.Net.Mail.SmtpException: The SMTP server requires a secure connection
or the client was not authenticated. The server response was:
5.5.1 Authentication Required. Learn more at
Есть ли что-то, что отличается от "Облачного сервиса" Windows Azure "Веб-сайт", который может иметь этот эффект?
Спасибо!
Ответы
Ответ 1
Используйте следующие настройки SMTP в Web.config:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network defaultCredentials="false" enableSsl="true" host="smtp.gmail.com" port="587" userName="[email protected]" password="xxxxxxxxxxx"/>
</smtp>
</mailSettings>
</system.net>
Я думаю, что вы ошибаетесь. Используйте суффикс @gmail.com в имени пользователя и попытайтесь также установить свойство bodyhtml true...
Надеюсь, что это сработает для вас.. Это всегда работает правильно для меня..
Отметьте ответ на комментарий в этот поток SO.
Ответ 2
Я испытал эту точную проблему. Однако я столкнулся с проблемой независимо от того, что я использовал настройки конфигурации <system.net>
, и я использовал правильные учетные данные, хост, порт и т.д.
Проблема заключалась в том, что Google отклонял запрос аутентификации, который поступал от Azure. Я нашел это, войдя в учетную запись Gmail, которую я использовал для SMTP-клиента в своем коде. Как только я вошел в учетную запись Gmail, я заметил предупреждение с красным заголовком, в котором говорилось
Кто-то подписал контракт с местоположением, которое не является типичным для вашей учетной записи. Если это не вы, немедленно измените свой пароль.
в дополнение к предупреждению, я получил электронное письмо, в котором говорилось:
Кто-то недавно попытался использовать приложение для входа в Google Учетная запись, [email protected] Мы предотвратили попытку входа в систему в случае это был угонщик, пытающийся получить доступ к вашей учетной записи. Пожалуйста, просмотрите сведения о попытке входа:
- Понедельник, 27 августа 2012 г. 10:33:59 PM GMT
- IP-адрес: 168.62.48.183
- Местоположение: США.
Если вы не признаете эту попытку входа, кто-то другой может быть пытаясь получить доступ к вашей учетной записи. Вы должны войти в свою учетную запись и reset ваш пароль немедленно. Узнайте, как на http://support.google.com/accounts?p=reset_pw
Если это вы, и вы хотите предоставить этому приложению доступ к вашему учетной записи, выполните действия по устранению неполадок, перечисленные в http://support.google.com/mail?p=client_login
С уважением, команда учетных записей Google
После того, как я выполнил шаги, перечисленные в предоставленной ссылке, мой сайт Azure смог успешно войти в мою учетную запись Gmail и использовать Gmail в качестве SMTP-клиента.
Ответ 3
Кажется, ваше соединение отклонено сервером SMTP либо потому, что оно не включено SSL, либо учетные данные неверны. Вам необходимо настроить SSL и сетевые учетные данные в вашем web.config, как показано ниже:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network enableSsl="true" host="smtp.gmail.com" port="25" userName="[email protected]" password="xxxxxxxxxxx"/>
</smtp>
</mailSettings>
</system.net>
Дополнительная информация доступна в этой дискуссии SO:
С# - Не удается отправить почту в WIndows Azure через Gmail SMTP
Ответ 4
Как указано на странице устранения неполадок Google, переход на следующую ссылку и вход в систему с моего локального компьютера исправил ошибку при отправке электронной почты с веб-сайта Azure для меня.
http://www.google.com/accounts/DisplayUnlockCaptcha
Ответ 5
Как сказано выше, ваше имя пользователя должно содержать " @googlemail.com". В моем коде (java) я использую порт 465 для отправки писем через почту Google.