Ошибка в 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 часов мирового IP-адресу: ХХХ.ХХ.ХХ.ХХХ (abcd.net.) Местоположение: Филадельфия, Филадельфия, Пенсильвания, США

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

сброс пароля

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

Искренне Ваш, команда аккаунтов Google

21 180

21 ответ:

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

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

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

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

Пример 1: когда пароль неверен

Пример 2: при попытке войти в систему из какого-либо приложения

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

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

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

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

решение 2 для случая 2: (см. https://stackoverflow.com/a/9572958/52277) включите двухфакторную аутентификацию (она же двухэтапная проверка) , а затем создайте пароль для конкретного приложения. Использовать новый пароль для авторизации через SMTP.

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

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

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

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

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

и это все. Вот, держи. Теперь ты вы сможете войти с любого компьютера и с помощью любого приложения в свой аккаунт google.

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

после входа на ваш e-mail,НАЖМИТЕ ЗДЕСЬ

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

Less Secure Apps Page

проведя пару часов сегодня, пробуя каждое решение здесь, я все еще не мог пройти мимо этой точной ошибки. Я использовал 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
        }

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

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

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

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

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

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

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

            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);

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

у меня была такая же проблема для приложения, развернутого в 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

Итак, войдите в свою учетную запись, а затем перейдите google.com/settings/security/lesssecureapps

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

enter image description here

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

  1. отключить 2-факторную аутентификацию
  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);
    }

отключение 2-факторной аутентификации Turning off 2-factor authentication

установите "разрешить менее безопасные приложения "на (та же страница, нужно прокрутить вниз) Allow less secure apps

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

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

  • 1-Войдите в свой аккаунт

    2 - обзор этого ссылке

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

наслаждайтесь....

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

            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)...

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

  1. войдите в свой admin.google.com
  2. нажмите Безопасность
  3. Нажмите Кнопку Основные Настройки
  4. прокрутите до нижней части окна основные настройки, нажмите на ссылку: "Перейти к настройкам для менее безопасных приложений"
  5. выберите опцию #3: принудительный доступ к менее безопасным приложениям для всех пользователей (не рекомендуется)
  6. Нажмите кнопку Сохранить в нижней части окна

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

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

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

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

Screen shot

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

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

" проблема в том, что в usedefaultcredentials setter есть этот код: this.транспорт.Учетные данные = значение ? (ICredentialsByHost) CredentialCache.DefaultNetworkCredentials: (ICredentialsByHost) null; который переопределяет учетные данные, установленные параметром Credentials setter. Для меня это выглядит как ошибка SmtpClient"

если поставить smtpClient.UseDefaultCredentials = false после установить полномочия... в этой строке задано значение null для этих учетных данных...

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

чтобы делать:

https://myaccount.google.com/lesssecureapps

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

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

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

Host = "smtp.googlemail.com"

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