Отправка электронной почты через 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 ]

8 голосов
/ 02 мая 2015

Если здесь у вас ничего не работает, вам может потребоваться разрешить доступ к вашей учетной записи Gmail из сторонних приложений. Это была моя проблема. Чтобы разрешить доступ, сделайте следующее:

  1. Войдите в свой аккаунт Gmail.
  2. Посетите эту страницу https://accounts.google.com/DisplayUnlockCaptcha и нажмите на кнопку, чтобы разрешить доступ.
  3. Посетите эту страницу https://www.google.com/settings/security/lesssecureapps и включите доступ для менее безопасных приложений.

Это сработало для меня, надеюсь, это сработает для кого-то еще!

8 голосов
/ 15 сентября 2010

Я не уверен, какая версия .NET требуется для этого, потому что eglasius упомянул, что нет соответствующей настройки enableSsl (я использую .NET 4.0, но подозреваю, что она будет работать в .NET 2.0 или более поздней версии), но эта конфигурация оправдывала меня (и не требует использования какой-либо программной конфигурации):

<system.net>
  <mailSettings>
    <smtp from="myusername@gmail.com" deliveryMethod="Network">
      <network defaultCredentials="false" enableSsl="true" host="smtp.gmail.com" port="587" password="password" userName="myusername@gmail.com"/>
    </smtp>
  </mailSettings>
</system.net>

Возможно, вам сначала потребуется включить POP или IMAP в вашей учетной записи Gmail: https://mail.google.com/mail/?shva=1#settings/fwdandpop

Рекомендую сначала попробовать с обычным почтовым клиентом ...

6 голосов
/ 25 ноября 2010

@ Андрес Помпильо: Да, верно, вы должны изменить свой пароль хотя бы один раз ... этот код работает просто отлично:

//Satrt Send Email Function
public string SendMail(string toList, string from, string ccList,
    string subject, string body)
{

    MailMessage message = new MailMessage();
    SmtpClient smtpClient = new SmtpClient();
    string msg = string.Empty;
    try
    {
        MailAddress fromAddress = new MailAddress(from);
        message.From = fromAddress;
        message.To.Add(toList);
        if (ccList != null && ccList != string.Empty)
            message.CC.Add(ccList);
        message.Subject = subject;
        message.IsBodyHtml = true;
        message.Body = body;
        // We use gmail as our smtp client
        smtpClient.Host = "smtp.gmail.com";   
        smtpClient.Port = 587;
        smtpClient.EnableSsl = true;
        smtpClient.UseDefaultCredentials = true;
        smtpClient.Credentials = new System.Net.NetworkCredential(
            "Your Gmail User Name", "Your Gmail Password");

        smtpClient.Send(message);
        msg = "Successful<BR>";
    }
    catch (Exception ex)
    {
        msg = ex.Message;
    }
    return msg;
}
//End Send Email Function

И вы можете вызвать функцию, используя:

Response.Write(SendMail(recipient Address, "UserName@gmail.com", "ccList if any", "subject", "body"))
6 голосов
/ 08 июля 2013

Я использовал корпоративное VPN-соединение. Это была причина, почему я не мог отправить электронное письмо из своего заявления. Это работает, если я отключаюсь от VPN.

5 голосов
/ 14 мая 2011

Я также пытался многие решения, но внести некоторые изменения, это будет работать

host = smtp.gmail.com
port = 587
username = email@gmail.com
password = password
enabledssl = true

с указанными выше параметрами smtpclient работают в gmail

5 голосов
/ 04 февраля 2011

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

4 голосов
/ 27 декабря 2015

Включите менее безопасные приложения для своей учетной записи: https://www.google.com/settings/security/lesssecureapps

4 голосов
/ 22 сентября 2009

Еще одна вещь, которую я обнаружил, это то, что вы должны изменить свой пароль хотя бы один раз. И попробуйте использовать пароль безопасного уровня (не используйте того же пользователя, что и пароль, 123456 и т. Д.)

4 голосов
/ 16 января 2015

Еще одно возможное решение для вас. У меня были похожие проблемы с подключением к Gmail через IMAP. Перепробовав все решения, с которыми я столкнулся, о которых вы прочтете здесь и в других местах на SO (например, включите IMAP, включите менее безопасный доступ к вашей почте, используя https://accounts.google.com/b/0/displayunlockcaptcha и т. Д.), Я фактически настроил новый аккаунт Gmail еще раз.

В моем исходном тесте первая учетная запись Gmail, которую я создал, я подключил к своей основной учетной записи Gmail. Это приводило к ошибочному поведению, когда Google ссылался на неправильный аккаунт. Например, запуск https://accounts.google.com/b/0/displayunlockcaptcha открыл мою основную учетную запись, а не ту, которую я создал для этой цели.

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

Я еще не подтвердил это (т.е. воспроизвел), но он, очевидно, сделал это для меня ... надеюсь, это поможет.

4 голосов
/ 04 августа 2010

Я столкнулся с этой же ошибкой ( "SMTP-серверу требуется безопасное соединение, или клиент не был аутентифицирован. Ответ сервера: 5.5.1 Требуется аутентификация. Подробнее на" ) и выяснил что я использовал неправильный пароль. Я установил учетные данные, и они были отправлены правильно.

Я знаю, что уже поздно, но, возможно, это поможет кому-то еще.

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