Невозможно использовать 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.