it-swarm.com.ru

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

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

        var fromAddress = new MailAddress("[email protected]");
        var fromPassword = "xxxxxx";
        var toAddress = new MailAddress("[email protected]");

        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 Аккаунт [email protected] Этот человек использовал приложение такое как электронная почта, клиент или мобильное устройство. 

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

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

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

Сброс пароля 

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

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

193
vcs

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

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

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

162
Arshad

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

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

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

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

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

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

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

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

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

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

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

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

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

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

235
Roshan Parmar

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

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

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

 Less Secure Apps Page

92
Sayka

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

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

18
user1011627

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

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

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

11
Barak Rosenfeld

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

8
Trung

У меня есть ранее работающий код, который выдает эту ошибку сейчас. Нет проблем с паролем. Нет необходимости конвертировать сообщения в 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("[email protected]", "secretpassword"),
            EnableSsl = true
        };

        client.Send("[email protected]", emailTo, subject, body);
    }

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

Установите для параметра «Разрешить менее безопасные приложения» значение ВКЛ (та же страница, необходимо прокрутить вниз)  Allow less secure apps

7
Jeson Martajaya

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

6
Anik

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

            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");             
            mail.From = new MailAddress("[email protected]");
            mail.To.Add("[email protected]");
            mail.To.Add("[email protected]");
            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);

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

4
Ganesh Pillai N

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

3
Raj K

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

 enter image description here

2
Rajesh Paliwal

Что мне помогло, так это активировать опцию для менее безопасных приложений (я использую 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("[email protected]")
        mail.[To].Add("[email protected]")
        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

2
Edgar

У меня была такая же проблема для приложения, развернутого в 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("[email protected]", "my_password"); 

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

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

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

1
Kris Coleman

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

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

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

1
FabianSilva

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

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

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

 Screen shot

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

0
samiup

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

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

var fromAddress = new MailAddress([email protected], "From Name");
var toAddress = new MailAddress("[email protected]", "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);
}
0
InGeek

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

сделать:

https://myaccount.google.com/lesssecureapps

0
MohammadSoori

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

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

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

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

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

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

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

0
Muhammad Azeem

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

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

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

0
RichieMN

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

:) 

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

0
dewelloper