Отправка электронной почты через SMTP-сервер Gmail с помощью C #

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

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

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

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

SMTP-сервер требует безопасного соединения, или клиент не был аутентифицирован.

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

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

ОБНОВИТЬ:

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

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

1.04.2009 08:45:39
Я пытался сделать это, используя аналогичные методы на другом языке. Столкнулся с тем же типом вещей: старые документированные методы, которые работали раньше, у меня не работали. Таким образом, вы задаетесь вопросом, изменил ли Google что-то, или вы сделали что-то не так.
AaronLS 1.04.2009 08:49:20
@aaronls единственное недавнее изменение, похоже, связано с портом 465. Я попробовал это, ища решение (я только работал над тем же самым), и время ожидания порта 465 все время. Если это ваш случай, попробуйте использовать порт 587.
eglasius 2.04.2009 00:46:36
Эта проблема связана с «проверкой слова» (капча). Если вы войдете через веб-интерфейс вручную и введете код проверки, ваш SMTP начнет работать.
Robert Koritnik 21.10.2009 16:45:04
@cvertex проверь мой ответ по смене пароля на надежный пароль, сработал для меня и нескольких других, подтвердил. Тогда, пожалуйста, примите ответ, если он сработал для вас. Спасибо.
Erx_VB.NExT.Coder 19.09.2011 18:43:38
FWIW, у меня работает. вам нужно использовать 587 и .EnableSSL true. c # 4 / .NET 4 в настоящее время не поддерживает альтернативный 465 / SSL. Gmail требует настройки других почтовых клиентов .
gerryLowry 4.12.2011 19:29:23
28 ОТВЕТОВ
РЕШЕНИЕ

CVertex, обязательно просмотрите свой код и, если это ничего не раскрывает, опубликуйте его. Я просто включил это на тестовом сайте ASP.NET, над которым я работал, и это работает.

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("myusername@gmail.com", "mypwd"),
                EnableSsl = true
            };
            client.Send("myusername@gmail.com", "myusername@gmail.com", "test", "testbody");
            Console.WriteLine("Sent");
            Console.ReadLine();
        }
    }
}

Я также получил его, используя комбинацию web.config, http://msdn.microsoft.com/en-us/library/w355a94k.aspx и кода (потому что EnableSslв файле конфигурации нет совпадений :().

290
17.02.2011 22:20:02
У меня блестяще работало в C # winforms приложении. Спасибо, Фредди.
Andrew 15.06.2009 13:21:57
Просто помните, что такой код эффективно передает ваши учетные данные gmail в виде простого текста пользователю ...
Chris Marisic 19.04.2010 13:00:40
на самом деле есть соответствующий параметр для enableSsl в web.config, см. ответ ниже
Wiebe Tijsma 15.09.2010 12:07:25
@Zidad, который был добавлен в 4.0.
eglasius 15.09.2010 12:23:22
Вам также может потребоваться включить доступ к «менее защищенным приложениям» на странице настроек Gmail: google.com/settings/security/lesssecureapps . Это необходимо, если вы получаете исключение "` Ответ сервера: 5.5.1 Требуется аутентификация.
Ravendarksky 31.07.2015 11:38:34

Проблема не в технической возможности отправки через gmail. Это работает для большинства ситуаций. Если вы не можете получить машину для отправки, это обычно происходит из-за того, что машина не прошла проверку подлинности с человеком на пульте управления хотя бы один раз.

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

То, что я сделал в моей нынешней системе, это отправка с задержкой в ​​1,5 секунды между каждым сообщением. Затем, если я получу какие-либо ошибки, остановитесь на 5 минут, а затем начните снова. Обычно это работает и позволяет вам отправлять аккаунты до предела (в последний раз я проверял, что это было 2000 для первичных входов клиентов в день).

9
26.08.2009 06:28:58
Это была именно моя проблема! Когда я развернулся в Production, у меня возникла проблема, и после того, как я вошел в Gmail на самом сервере, он снова начал работать.
ThisGuy 16.06.2012 01:30:57

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

4
17.02.2011 22:28:46

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

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

4
3.08.2010 22:34:40

Я не уверен, какая версия .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

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

8
17.02.2011 22:30:32
это ново для 4.0, сравните версии по адресу -> msdn.microsoft.com/en-us/library/ms164242(v=VS.90).aspx
eglasius 15.09.2010 12:22:42
Привет, Эгласиус ... Хорошо, спасибо за это! Странно, они имеют только программный подход в до-4.0. Я думаю, мы все время от времени забываем обо всем :)
Wiebe Tijsma 20.09.2010 11:55:37
Dim SMTPClientObj As New Net.Mail.SmtpClient
SMTPClientObj.UseDefaultCredentials = False
SMTPClientObj.Credentials = New System.Net.NetworkCredential("myusername@gmail.com", "mypwd")
SMTPClientObj.Host = "smtp.gmail.com"
SMTPClientObj.Port = 587
SMTPClientObj.EnableSsl = True
SMTPClientObj.Send("myusername@gmail.com","yourusername@gmail.com","test","testbody")

Если вы получаете сообщение об ошибке типа «SMTP-сервер требует защищенного соединения или клиент не был аутентифицирован. Ответ сервера был: 5.5.1 Требуется аутентификация. Узнайте больше на», как я получал до этого, убедитесь, что строка SMTPClientObj.UseDefaultCredentials = Falseвключена и эта строка должен перед SMTPClientObj.Credentials.

Я попытался переключить эти две строки противоположным образом, и вернулась ошибка 5.5.1 Authentication Required .

13
17.02.2011 22:32:38
Это именно то, что случилось со мной. Кто думал, что порядок установки свойства будет исправлять / разрушать вещи!
Bill Yang 24.01.2011 20:12:41
Это было проблемой и для меня, я сменил порядок в соответствии с предложением, и он отлично работает - головные боли, тьфу!
eth0 7.03.2011 10:02:13

У меня была такая же проблема, но оказалось, что моя антивирусная защита блокировала исходящую "спам" электронную почту. Отключение позволило мне использовать порт 587 для отправки электронной почты SMTP через GMail

9
1.10.2010 23:50:15
Я отключил Защитник Windows, и он тоже начал работать.
MorioBoncz 27.07.2014 23:26:04

Вы также можете подключиться через порт 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) в другом обсуждении ( SMTP GMail через ошибки C # .Net на всех портах ).

3
23.05.2017 12:10:07

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

//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
12.04.2012 07:01:41
SMTP-сервер требует безопасного соединения, или клиент не был аутентифицирован. Ответ сервера: 5.5.1 Требуется аутентификация. Узнайте больше на
Savas Adar 4.03.2014 12:47:25

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

5
3.02.2011 21:58:43

СЛЕДУЮЩАЯ ПОЧТИ ПОЧТИ БУДЕТ ОТВЕТСТВЕННО НА ОТВЕТ НА ВАШЕ ВОПРОС, ЕСЛИ ВСЕ ПРОЧЕЕ НЕ ПОЛУЧИЛОСЬ :

Я получил точно такую ​​же ошибку, оказалось, что новый алгоритм измерения надежности пароля Google изменил, посчитав мой текущий пароль слишком слабым, и не сказал мне ничего об этом (даже сообщение или предупреждение) ... Как я узнал об этом ? Ну, я решил изменить свой пароль, чтобы посмотреть, поможет ли он (пробовал все остальное безрезультатно), и когда я сменил пароль, это сработало!

Затем, для эксперимента, я попытался изменить свой пароль обратно на свой предыдущий пароль, чтобы посмотреть, что произойдет, и Gmail на самом деле не позволил мне сделать это, сославшись на причину: «извините, мы не можем позволить вам сохранить это изменение как выбранное вами». пароль слишком слабый "и не позволил бы мне вернуться к моему старому паролю. Из этого я понял, что это происходит с ошибкой, потому что либо а) вам нужно менять пароль один раз каждые x месяцев, либо б). как я уже говорил, их алгоритмы надежности паролей изменились, и поэтому слабый пароль, который я имел, не был принят, хотя они ничего не говорили об этом, когда пытались войти НИКОГДА! Это (номер 2) наиболее вероятный сценарий, поскольку моему слабому паролю было около 4 месяцев, и это позволило мне использовать его в Gmail.

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

Надеюсь, это поможет!

72
31.07.2013 12:16:13
Спасибо, как вы говорите, смените пароль, чтобы он был надежным и все работало нормально.
Gavin 14.07.2011 21:03:18
Это была именно моя проблема - все другие предложения были о конфигурации, но моя конфигурация была правильной с самого начала, но я продолжал получать ошибку. Смена пароля имела огромное значение,
André Vermeulen 27.08.2011 15:26:39
Спасибо, наконец-то я смог разобраться с этой проблемой, мой случай был на самом деле еще более сложным, я смог отправлять электронные письма со своего компьютера разработчика (который находится в Грузии, на Кавказе), но электронные письма не работали с производственных серверов (Великобритания) После Смена пароля на сложный - теперь все работает :)
Kirill Chilingarashvili 17.08.2014 18:30:10
Спасибо. У меня была та же проблема с моей учетной записью Gmail, у которой не было надежности пароля. Я обновил его с сильным, и мои коды работают.
Thomas.Benz 16.10.2015 20:54:40
Спасибо, да, наконец, это просто изменить пароль на надежный.
Misha Beskin 8.06.2016 06:26:30

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

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

3
20.04.2011 19:02:53

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

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

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

5
12.04.2012 06:59:56

У меня также были некоторые проблемы с отправкой электронных писем с моего аккаунта Gmail, что было связано с несколькими из вышеупомянутых ситуаций. Вот краткое изложение того, как я получил это, и в то же время сохраняя его гибким:

  • Прежде всего настройте учетную запись GMail:
    • Включите IMAP и подтвердите правильное максимальное количество сообщений (вы можете сделать это здесь)
    • Убедитесь, что ваш пароль не менее 7 символов и является надежным (согласно Google)
    • Убедитесь, что вам не нужно вводить код с картинки. Вы можете сделать это, отправив тестовое электронное письмо из браузера.
  • Внесите изменения в web.config (или app.config, я еще не пробовал, но я предполагаю, что так же легко заставить его работать в приложении для Windows):
<configuration>
    <appSettings>
        <add key="EnableSSLOnMail" value="True"/>   
    </appSettings>

    <!-- other settings --> 

    ...

    <!-- system.net settings -->
    <system.net>
        <mailSettings>
            <smtp from="yourusername@gmail.com" deliveryMethod="Network">
                <network 
                    defaultCredentials="false" 
                    host="smtp.gmail.com" 
                    port="587" 
                    password="stR0ngPassW0rd" 
                    userName="yourusername@gmail.com"
                    />
                <!-- When using .Net 4.0 (or later) add attribute: enableSsl="true" and you're all set-->
            </smtp>
        </mailSettings>
    </system.net>
</configuration>
Add a Class to your project:

Imports System.Net.Mail

Public Class SSLMail

    Public Shared Sub SendMail(ByVal e As System.Web.UI.WebControls.MailMessageEventArgs)

        GetSmtpClient.Send(e.Message)

        'Since the message is sent here, set cancel=true so the original SmtpClient will not try to send the message too:
        e.Cancel = True

    End Sub

    Public Shared Sub SendMail(ByVal Msg As MailMessage)
        GetSmtpClient.Send(Msg)
    End Sub

    Public Shared Function GetSmtpClient() As SmtpClient

        Dim smtp As New Net.Mail.SmtpClient
        'Read EnableSSL setting from web.config
        smtp.EnableSsl = CBool(ConfigurationManager.AppSettings("EnableSSLOnMail"))
        Return smtp
    End Function

End Class

И теперь, когда вы хотите отправить электронное письмо, все, что вам нужно сделать, это позвонить SSLMail.SendMail:

например, на странице с элементом управления PasswordRecovery:

Partial Class RecoverPassword
Inherits System.Web.UI.Page

Protected Sub RecoverPwd_SendingMail(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MailMessageEventArgs) Handles RecoverPwd.SendingMail
    e.Message.Bcc.Add("webmaster@example.com")
    SSLMail.SendMail(e)
End Sub

End Class

Или в любом месте вашего кода вы можете позвонить:

SSLMail.SendMail(New system.Net.Mail.MailMessage("from@from.com","to@to.com", "Subject", "Body"})

Надеюсь, это поможет любому, кто сталкивается с этим постом! (Я использовал VB.NET, но я думаю, что легко преобразовать его в любой язык .NET.)

30
3.03.2016 14:22:03
+1 "enableSsl =" true "- это работает для унаследованного приложения, которое специально не устанавливает свойство Smtp.enableSsl без перекомпиляции сборок. Отличный совет!
Metro Smurf 22.04.2017 18:33:12
и не забывайте брандмауэр. Порт 587 не является обычным портом для открытия.
Guy Lowe 21.03.2019 23:49:02

Ох ... Это удивительно ... Во-первых, я не мог отправить электронное письмо по каким-либо причинам. Но после того, как я изменил последовательность этих двух строк, как показано ниже, она работает отлично.

//(1)
client.UseDefaultCredentials = true;
//(2)
client.Credentials = new System.Net.NetworkCredential("username@gmail.com", "password");

Надеюсь, это поможет! :)

13
12.04.2012 06:59:28
Да, порядок имеет значение. Особенно, когда вы устанавливаете свойство Credentials и не хотите использовать учетные данные по умолчанию.
Stefan Cvetanovski 8.02.2013 16:51:18
Согласно документации, для использования учетных данных необходимо установить UseDefaultCredentials = false. Однако эти два параметра кажутся тайно взаимосвязанными. Если вы установите для UseDefaultCredentials значение true или false, это будет иметь побочный эффект от установки учетных данных на ноль. И кажется, что установка учетных данных может побочным эффектом установить UseDefaultCredentials = false. Однако не указано, что это может быть ошибкой или просто неудачным разработчиком.
Aaron 18.07.2015 01:32:17

В дополнение к другим шагам по устранению неполадок, приведенным выше, я также хотел бы добавить, что если вы включили двухфакторную аутентификацию (также называемую двухэтапной проверкой ) в своей учетной записи GMail, вы должны сгенерировать пароль для конкретного приложения и использовать его заново. сгенерированный пароль для аутентификации через SMTP .

Чтобы создать его, перейдите на страницу https://www.google.com/settings/ и выберите Авторизация приложений и сайтов для генерации пароля.

66
5.03.2012 19:48:48
У меня не была включена двухэтапная проверка, и не имело значения, насколько надежно я сделал пароль, это был единственный способ решить мою проблему. Я мог использовать другие учетные записи Gmail без двухэтапных и более слабых паролей без проблем ... чтобы использовать ту учетную запись, которую я действительно хотел использовать, мне пришлось включить двухэтапный и использовать специальный пароль приложения.
Ian Robertson 2.11.2014 11:42:15
Именно то, что я делаю, но все еще та же ошибка: - / Он действует так, будто мой пароль недостаточно силен, но я использую пароль приложения, который мне дал Gmail !!!
Jerry Dodge 30.01.2017 18:11:39

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

6
8.07.2013 00:03:35

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

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

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

5
19.08.2013 20:56:37
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;
2
26.07.2019 08:00:53

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

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

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

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

4
16.01.2015 15:36:33
Turn On Access For Less Secure Apps and it will work for all no need to change password.

Ссылка на настройки Gmail

введите описание изображения здесь

53
19.02.2015 09:18:21
Это сработало для меня. Более того, когда я попытался отправить электронное письмо указанным выше способом, я получил письмо от Google, где они прямо сказали, что заблокировали эту попытку из менее безопасного приложения, и упомянули этот способ ее исправить
Demarsch 27.03.2017 20:40:16
Это самый важный ключ в головоломке, так как у меня были настроены все остальные настройки, и казалось, что они не работают. Как только у меня была эта настройка, она работала как шарм.
Lost 12.03.2018 18:51:09
Это сработало для меня. Пароль приложения + SSL + NetworkCredentials. (VB.NET)
CrazyIvan1974 17.12.2018 18:42:04

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

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

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

9
10.05.2015 01:37:04

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

5
27.12.2015 00:39:01
  1. Сначала проверьте настройки учетной записи Gmail и включите «Доступ к менее защищенным приложениям». введите описание изображения здесь

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

  1. Набор

    smtp.UseDefaultCredentials = false;

    перед

    smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
4
27.02.2016 12:26:45

Простые шаги, чтобы исправить это:

1) Войдите в свой Gmail

2) Перейдите на эту страницу https://www.google.com/settings/security/lesssecureapps и установите значение «Включить»

10
11.04.2016 03:56:30

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

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

1
9.07.2016 20:54:50

Есть одна или несколько причин для этой ошибки.

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

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

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

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

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

4
23.05.2017 12:26:10
Что если я не хочу включать менее безопасные настройки приложения, как другие почтовые клиенты делают это, почему я не могу сделать то же самое с c #?
user734028 17.01.2018 17:18:58

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

2
8.04.2019 15:57:39