Ошибка Gmail: SMTP-сервер требует безопасного соединения или клиент не прошел проверку подлинности. Ответ сервера: 5.5.1 Требуется аутентификация

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

        var fromAddress = new MailAddress("mymailid@gmail.com");
        var fromPassword = "xxxxxx";
        var toAddress = new MailAddress("yourmailid@yourdoamain.com");

        string subject = "subject";
        string body = "body";

        System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient
        {
            Host = "smtp.gmail.com",
            Port = 587,
            EnableSsl = true,
            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
            UseDefaultCredentials = false,
            Credentials = new NetworkCredential(fromAddress.Address, fromPassword)

        };

        using (var message = new MailMessage(fromAddress, toAddress)
        {
            Subject = subject,
            Body = body
        })


        smtp.Send(message);

И на моем Gmail A/ C я получил следующее письмо после того, как я запустил код с рабочего сервера

Привет,

Кто-то недавно использовал ваш пароль, чтобы попытаться войти в свою учетную запись Google mymailid@gmail.com. Этот человек использовал приложение, такое как электронная почта, клиент или мобильное устройство.

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

Пятница, 3 января 2014 г. 13:56:08:00 UTC IP-адрес: xxx.xx.xx.xxx (abcd.net.) Расположение: Филадельфия, Пенсильвания, Филадельфия, Пенсильвания, США.

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

Сброс пароля

Если это был вы, и у вас возникли проблемы с доступом к учетной записи, выполните действия по устранению неполадок, перечисленные на http://support.google.com/mail?p=client_login.

С уважением, команда Аккаунтов Google

30 ответов

Решение

Обычно это происходит при попытке входа в систему из другого часового пояса или компьютера с IP-адресом. Ваш рабочий сервер и используемый вами почтовый идентификатор находятся в разных часовых поясах. Выберите одно из решений:

1) Войдите на рабочий сервер через удаленный доступ и войдите в Gmail, указав свои учетные данные. Они попросят подтверждение, подтвердят его и выйдут.

Или 2) войдите в Gmail на свой локальный компьютер, перейдите по этой ссылке, выберите обзор этой активности и выполните соответствующие действия.

При попытке отправить почту из кода и обнаружении ошибки "SMTP-серверу требуется безопасное соединение или клиент не прошел проверку подлинности. Ответ сервера был: 5.5.1 Требуется проверка подлинности", то ошибка может возникнуть из-за следующих случаев.

случай 1: когда пароль неверный

Случай 2: когда вы пытаетесь войти из какого-либо приложения

случай 3: когда вы пытаетесь войти с домена, отличного от вашего часового пояса / домена / компьютера(это имеет место в большинстве случаев при отправке почты из кода)

Есть решение для каждого

Решение для случая 1: введите правильный пароль.

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

Решение 2 для случая 2: (см. /questions/32323063/otpravka-elektronnoj-pochtyi-cherez-smtp-server-gmail-s-pomoschyu-c/32323068#32323068) включить двухфакторную аутентификацию (или двухэтапную проверку), а затем сгенерировать пароль для конкретного приложения. Используйте этот новый пароль для аутентификации через SMTP.

Решение 1 для случая 3: (Это может быть полезно), вам нужно проверить действие. но проверка активности не будет полезна из-за последних стандартов безопасности, ссылка не будет полезна. Так что попробуйте следующий случай.

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

Но что, если у вас нет доступа к производственному серверу. попробуйте решение 3

Решение 3 для случая 3: Вы должны включить логин из другого часового пояса / ip для вашей учетной записи Google.

Для этого перейдите по ссылке https://g.co/allowaccess и разрешите доступ, нажав кнопку "Продолжить".

И это все. Ну вот. Теперь вы сможете войти с любого компьютера и любого приложения в свою учетную запись Google.

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

После входа в свою электронную почту НАЖМИТЕ ЗДЕСЬ

Это приведет вас к следующей странице

Страница менее безопасных приложений

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

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

В этом первом фрагменте кода ниже обратите внимание, где находится строка "Credentials = creds". Эта реализация сгенерирует ошибку, указанную в этом вопросе, даже если все остальное настроено правильно.

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient
        {
            Host = Emailer.Host,
            Port = Emailer.Port,
            Credentials = creds,
            EnableSsl = Emailer.RequireSSL,
            UseDefaultCredentials = false,
            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network
        }

Однако если переместить вызов установщика учетных данных вниз, электронное письмо будет отправлено без ошибок. Я не внес изменений в окружающий код... т.е.... имя пользователя / пароль и т. Д. Ясно, что либо EnableSSL, UseDefaultCredentials, либо DeliveryMethod зависит от того, какие учетные данные устанавливаются первыми... Я не проверял все, чтобы выяснить, какой это был хотя.

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient
        {
            Host = Emailer.Host,
            Port = Emailer.Port,
            EnableSsl = Emailer.RequireSSL,
            UseDefaultCredentials = false,
            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
            Credentials = creds
        }

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

Вы должны включить "Разрешить менее безопасные приложения" здесь https://myaccount.google.com/lesssecureapps

Привет, у меня была такая же проблема,

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

Затем я включаю безопасное приложение, и оно работает. это было сказано также выше

У меня есть ранее работающий код, который выдает эту ошибку сейчас. Нет проблем с паролем. Нет необходимости конвертировать сообщения в base64. Оказывается, мне нужно сделать следующее:

  1. Отключить двухфакторную аутентификацию
  2. Установите для параметра "Разрешить менее безопасные приложения" значение ВКЛ.
  3. Войдите в свою учетную запись Gmail с рабочего сервера.
  4. Зайдите сюда, чтобы подтвердить активность входа
  5. Запустите ваше приложение на рабочем сервере

Рабочий код

    public static void SendEmail(string emailTo, string subject, string body)
    {
        var client = new SmtpClient("smtp.gmail.com", 587)
        {
            Credentials = new NetworkCredential("youremail@gmail.com", "secretpassword"),
            EnableSsl = true
        };

        client.Send("youremail@gmail.com", emailTo, subject, body);
    }

Отключение двухфакторной аутентификации Отключение двухфакторной аутентификации

Установите "Разрешить менее безопасные приложения" в положение "ВКЛ" (на той же странице необходимо прокрутить вниз) Разрешить менее безопасные приложения

Недавно Gmail/Google удалили (с мая 2022 года) доступ к менее безопасным приложениям. Вот что они говорят:

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

Теперь любой почтовый клиент, имеющий прямую отправку электронной почты по SMTP, выдаст ошибку «535-5.7.8 Имя пользователя и пароль не приняты». Это связано с тем, что теперь Google запрашивает пароль для конкретного приложения, а пароль учетной записи электронной почты не является паролем приложения, поэтому они показывают, что имя пользователя / пароль не приняты.

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

Чтобы создать пароль для конкретного приложения:

  1. Включите двухфакторную аутентификацию.
  2. Перейдите в настройки учетной записи Gmail и выберите «Пароли приложений».
  3. Назовите его как хотите и придумайте пароль.
  4. Используйте этот новый 16-значный пароль вместе с электронной почтой Gmail для SMTP (вместо пароля используйте этот 16-значный пароль)

Наслаждайтесь отправкой писем .. !!

Просто следуйте инструкциям в электронной почте Google и включите менее безопасные приложения.

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

Итак, как правильно заявили другие, с 30 мая Google больше не поддерживает использование сторонних приложений для доступа к учетной записи.

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

Как только это будет сделано, я создал пароль приложения .

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

Я надеюсь, что это помогает кому-то:-)

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

            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");             
            mail.From = new MailAddress("fromaddress@gmail.com");
            mail.To.Add("toaddress1@gmail.com");
            mail.To.Add("toaddress2@gmail.com");
            mail.Subject = "Password Recovery ";
            mail.Body += " <html>";
            mail.Body += "<body>";
            mail.Body += "<table>";
            mail.Body += "<tr>";
            mail.Body += "<td>User Name : </td><td> HAi </td>";
            mail.Body += "</tr>";

            mail.Body += "<tr>";
            mail.Body += "<td>Password : </td><td>aaaaaaaaaa</td>";
            mail.Body += "</tr>";
            mail.Body += "</table>";
            mail.Body += "</body>";
            mail.Body += "</html>";
            mail.IsBodyHtml = true;
            SmtpServer.Port = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential("sendfrommailaddress.com", "password");
            SmtpServer.EnableSsl = true;
            SmtpServer.Send(mail);

Вы можете сослаться на это в моем блоге

Просто включите настройку или Gmail. смотри ниже данное изображение:

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

У меня была такая же проблема для приложения, развернутого в Microsoft Azure.

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

Сначала я утвердил все неизвестные устройства (некоторые ip-адреса из Ирландии) на следующей странице (вошел как пользователь gmail): https://security.google.com/settings/u/1/security/secureaccount

Я использовал следующие настройки для клиента:

var client = new SmtpClient("smtp.gmail.com");
client.Port = 587;
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("my_user_name@gmail.com", "my_password"); 

Он начал работать только после того, как я установил следующее свойство на smtp-клиенте:

client.TargetName = "STARTTLS/smtp.gmail.com";

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

Public Shared Sub enviaDB(ByRef body As String, ByRef file_location As String)
        Dim mail As New MailMessage()
        Dim SmtpServer As New SmtpClient("smtp.gmail.com")
        mail.From = New MailAddress("from@gmail.com")
        mail.[To].Add("to@gmail.com")
        mail.Subject = "subject"
        mail.Body = body
        Dim attachment As System.Net.Mail.Attachment
        attachment = New System.Net.Mail.Attachment(file_location)
        mail.Attachments.Add(attachment)
        SmtpServer.Port = 587
        SmtpServer.Credentials = New System.Net.NetworkCredential("user", "password")
        SmtpServer.EnableSsl = True
        SmtpServer.Send(mail)
    End Sub

Войдите в свою учетную запись и перейдите на страницу http://google.com/settings/security/lesssecureapps

НОЯБРЬ 2018, перепробовал все вышеперечисленное безуспешно.

Ниже приведено решение, которое сработало окончательно. К сожалению, он не использует SSL, но работает!!!

var fromAddress = new MailAddress(asd@asd.com, "From Name");
var toAddress = new MailAddress("tosend@asd.com", "To Name");

const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
{
    Host = "aspmx.l.google.com",
    Port = 25,
    EnableSsl = false
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}

Комментарий Томаша Мадейского - это то, что исправило мою проблему... он говорит, что существует ошибка в SetDefaultCredential, он говорит:

"Проблема в том, что в установщике UseDefaultCredentials есть такой код: this.transport.Credentials = value? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials: (ICredentialsByHost) null; который переопределяет учетные данные, установленные установщиком Credentials. Для меня это выглядит как ошибка" SmtCli "

если вы положите smtpClient.UseDefaultCredentials = false после установки учетных данных... эта строка устанавливает нулевые эти учетные данные...

Я попробовал все предложения, найденные здесь, от включения менее безопасных приложений до пробного порта 587... ничего не получалось. Наконец я просто закомментировал строку UseDefaultCredentials = false, Все работало, если я не трогал это логическое значение.

Во-первых, я приобрел домен в GoDaddy, и когда я щелкнул эту ссылку https://www.google.com/settings/security/lesssecureapps меня не было этой опции, появилось сообщение "Администратор домена управляет этими настройками", поэтому я перехожу в консоль администратора https://admin.google.com/

Есть такой вариант

Затем появляется вариант, который мне нужен в

Если вы используете Gmail.

  • 1-вход в вашу учетную запись

    2- просмотрите эту ссылку

    3- Разрешить менее безопасные приложения: ВКЛ

Наслаждаться....

Думаю, я опаздываю с ответом на этот вопрос, но попробуйте это, потому что у меня это сработало. После того, как вы вошли в систему из учетной записи, из которой хотите отправить электронное письмо, перейдите по этой ссылке https://accounts.google.com/b/0/DisplayUnlockCaptcha.

После нажатия на эту ссылку вы увидите сообщение примерно такого типа -> «В целях безопасности Google может потребовать от вас выполнить этот дополнительный шаг при входе в новое устройство или приложение.

Чтобы разрешить доступ, нажмите кнопку «Продолжить» ниже. "

И под этим сообщением будет кнопка "Продолжить", вам просто нужно нажать кнопку "Продолжить", и все готово.

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

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

https://support.google.com/accounts/answer/185833?hl=en

Скриншот

В основном вы можете сделать это здесь: https://security.google.com/settings/security/apppasswords

Я являюсь подписчиком приложений Google для бизнеса и последние пару часов провожу с этим, даже имея все правильные настройки (smtp, port, enableSSL и т. Д.). Вот что сработало для меня и веб-сайтов, которые выдавали ошибку 5.5.1 при попытке отправить электронное письмо:

  1. Войдите в свой admin.google.com
  2. Нажмите БЕЗОПАСНОСТЬ <- если его не видно, нажмите "БОЛЬШЕ КОНТРОЛЯ" и добавьте его из списка.
  3. Нажмите Основные настройки
  4. Прокрутите до конца поля "Основные настройки" и нажмите ссылку "Перейти к настройкам для менее безопасных приложений".
  5. Выберите опцию № 3: Обеспечить доступ к менее защищенным приложениям для всех пользователей (не рекомендуется)
  6. Нажмите СОХРАНИТЬ внизу окна

После этого мои почтовые формы с сайта снова работали. Удачи!

Вы должны запретить менее безопасные приложения для доступа к вашей учетной записи Google.

сделать:

https://myaccount.google.com/lesssecureapps

Если все правильно, например, идентификатор электронной почты smtp и пароль, перейдите в свою учетную запись gmail-> настройки, которые находятся вверху справа в учетной записи gmail, затем выберите «Настройки» -> «Учетная запись и импорт» -> «Другие настройки учетной записи Google» -> «Безопасность» -> «Менее безопасное приложение». доступ-> Разрешить менее безопасные приложения «ВКЛ».

После этого должно работать.

Не ставить точку останова до ожидания smtp.SendMailAsync (mail);

:)

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

Я действительно посмотрел на множество идей, единственное решение было так (работает с различными провайдерами электронной почты):

            try
        {
            ViewProgressbar("Try to connect mail-server...", progressBar1.Value = 20);
            string host = dsProvider.Rows[y]["POP_hostOut"].ToString();
            int port = int.Parse(dsProvider.Rows[y]["POP_portOut"].ToString());  //587
            string[] email = von1.Split('@');
            string userName = (dsProvider.Rows[y]["login"].ToString() == "email[0]@email[1]")? email[0]+"@"+email[1] : email[0];
            string password = layer.getUserPassword(listSender.SelectedValue.ToString());
            SmtpClient client = new SmtpClient(host, port);
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            //A idea from MSDN but it not works. You got the "The server response was: 5.5.1 Authentication Required."
            //System.Net.NetworkCredential myCreds = new System.Net.NetworkCredential(userName, password, host);
            //System.Net.CredentialCache cache = new System.Net.CredentialCache();
            //cache.Add(host, port, "NTLM", myCreds);
            ///cache.GetCredential(host, port, "NTLM");   //NTLM
            client.Credentials = new System.Net.NetworkCredential(userName, password);
            client.Host = host;
            client.Port = port;
            client.EnableSsl = true;
            client.Send(message);
            ViewProgressbar();
        }
        catch (SmtpException ex)...

Я использовал все вышеупомянутые решения, но в конце концов он заработал только после того, как я включил IMAP-доступ из настроек Gmail. Ссылка для включения IMAP-доступа в настройках Gmail.

Конечно, пункты в других решениях тоже требовались.

Попробуйте изменить хост, это новый, я получил эту настройку mozilla thunderbird

Host = "smtp.googlemail.com"

это работа для меня

Другие вопросы по тегам