Отправка электронной почты через SMTP-сервер Gmail с C # - PullRequest
229 голосов
/ 01 апреля 2009

Почему-то ни принятый ответ, ни какие-либо другие не работают для меня на " Отправка электронной почты в .NET через Gmail ". Почему они не работают?

ОБНОВЛЕНИЕ: Я попробовал все ответы (принятые и другие) на другой вопрос, но ни один из них не работает.

Я просто хотел бы знать, работает ли он для кого-то еще, в противном случае Google мог бы что-то изменить (что случилось раньше).

Когда я пробую фрагмент кода, который использует SmtpDeliveryMethod.Network, я быстро получаю SmtpException при отправке (сообщение). Сообщение

Для SMTP-сервера требуется безопасное соединение, или клиент не прошел проверку подлинности.

Ответ сервера был:

5.5.1 Требуется аутентификация. Узнайте больше на "<- серьезно, это заканчивается там. </p>

UPDATE:

Это вопрос, который я задавал давным-давно, и принятым ответом является код, который я использовал много-много раз в разных проектах.

Я взял некоторые идеи из этого поста и других проектов EmailSender, чтобы создать проект EmailSender в Codeplex . Он предназначен для тестирования и поддерживает мои любимые SMTP-сервисы, такие как GoDaddy и Gmail.

Ответы [ 28 ]

4 голосов
/ 27 февраля 2016
  1. Сначала проверьте настройки учетной записи Gmail и включите «Доступ к менее защищенным приложениям». enter image description here

Мы настоятельно рекомендуем использовать безопасное приложение, такое как Gmail, для доступа к своей учетной записи. Все приложения, созданные Google, соответствуют этим стандартам безопасности. Использование менее защищенного приложения, с другой стороны, может сделать вашу учетную запись уязвимой. Узнать больше.

  1. Набор

    smtp.UseDefaultCredentials = false;
    

    до

    smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
    
4 голосов
/ 20 августа 2013

Я получил ту же ошибку, и ни одно из перечисленных выше решений не помогло.

Моя проблема заключалась в том, что я запускал код с удаленного сервера, который никогда не использовался для входа в учетную запись gmail.

Я открыл браузер на удаленном сервере и оттуда вошел в gmail. Он задал секретный вопрос, чтобы убедиться, что это я, так как это новое место. После проверки безопасности я смог пройти проверку подлинности с помощью кода.

3 голосов
/ 20 апреля 2011

Я решил эту проблему. По-видимому, это сообщение используется в нескольких типах ошибок. Моя проблема заключалась в том, что я набрал максимум 500 отправленных писем.

войдите в аккаунт и вручную попробуйте отправить письмо. Если лимит был достигнут, он сообщит вам

3 голосов
/ 03 октября 2010

Вы также можете подключиться через порт 465, но из-за некоторых ограничений пространства имен System.Net.Mail вам, возможно, придется изменить свой код. Это связано с тем, что пространство имен не позволяет создавать неявные SSL-соединения. Это обсуждается в http://blogs.msdn.com/b/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx,, и я предоставил пример использования CDO (Collaborative Data Object) в другом обсуждении ( GMail SMTP через C #. Net ошибки на всех портах ).

2 голосов
/ 04 января 2017

Существует одна или несколько причин этой ошибки.

  • Войдите в свой Gmail (или любой другой, если) в вашей локальной системе.

  • Также проверьте менее безопасное приложение и установите для него значение «Включить», вот ссылка для GMAIL. https://www.google.com/settings/security/lesssecureapps

  • проверьте наличие EnableSsl в своем коде электронной почты, а также установите для него значение true.

    smtp.EnableSsl = true;
    
  • Также проверьте, какой порт вы используете в настоящее время. 25 - Глобальный, но вы можете проверить его и для других, например 587. проверьте здесь. Все ли SMTP-коммуникации происходят в течение 25?

  • ЕСЛИ ВЫ УДАЛЕНЫ : Проверьте ответ Влад Тамас выше.

2 голосов
/ 26 ноября 2013
  smtp.Host = "smtp.gmail.com"; //host name
    smtp.Port = 587; //port number
    smtp.EnableSsl = true; //whether your smtp server requires SSL
    smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
    smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
    smtp.Timeout = 20000;
1 голос
/ 09 июля 2016

Измените свой пароль Gmail и попробуйте еще раз, после этого он должен работать.

Не знаю почему, но каждый раз, когда вы меняете хостинг, вам приходится менять пароль.

0 голосов
/ 08 апреля 2019

Если у вас есть 2-ступенчатая проверка на вашем аккаунте Gmail, вам нужно будет сгенерировать пароль приложения. https://support.google.com/accounts/answer/185833?p=app_passwords_sa&hl=en&visit_id=636903322072234863-1319515789&rd=1 Выберите «Как создать пароль для приложения» и следуйте приведенным инструкциям. Скопируйте и вставьте сгенерированный пароль приложения куда-нибудь, поскольку вы не сможете восстановить его после нажатия кнопки Готово.

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