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

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

MailMessage msg = new MailMessage(); msg.From = new MailAddress("mymailid"); msg.To.Add("receipientid"); msg.Subject = "test"; msg.Body = "Test Content"; msg.Priority = MailPriority.High; SmtpClient client = new SmtpClient(); client.Credentials = new NetworkCredential("mymailid", "mypassword", "smtp.gmail.com"); client.Host = "smtp.gmail.com"; client.Port = 587; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.EnableSsl = true; client.UseDefaultCredentials = true; client.Send(msg); 

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

Когда я отправляю кнопку, она дает ошибку, например

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

Код в файле Web.config

                      

что я должен сделать, чтобы решить эту ошибку и отправить почту?

Сначала проверьте проблемы, связанные с безопасностью gmail. Возможно, вы включили двойную аутентификацию в gmail. Также проверьте входящие почтовые ящики gmail, если вы получаете предупреждения о безопасности. В таких случаях проверьте другой ответ @mjb, как показано ниже.

Ниже приведена самая общая вещь, которую я всегда проверяю в первую очередь по таким вопросам

 client.UseDefaultCredentials = true; 

установите для него значение false.

Примечание @Joe King – вы должны установить client.UseDefaultCredentials перед установкой client.Credentials

У меня такая же проблема.

Я нашел это решение:

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

Некоторые примеры приложений, которые не поддерживают новейшие стандарты безопасности, include:

  • Приложение Mail на вашем iPhone или iPad с iOS 6 или ниже
  • Приложение Mail на вашем телефоне Windows, предшествующем выпуску 8.1
  • Некоторые настольные почтовые клиенты, такие как Microsoft Outlook и Mozilla Thunderbird

Поэтому вы должны включить « Меньше безопасный вход» в свою учетную запись google.

После входа в учетную запись google перейдите по ссылке:

https://www.google.com/settings/security/lesssecureapps

В C # вы можете использовать следующий код:

 using (MailMessage mail = new MailMessage()) { mail.From = new MailAddress("[email protected]"); mail.To.Add("[email protected]"); mail.Subject = "Hello World"; mail.Body = "

Hello

"; mail.IsBodyHtml = true; mail.Attachments.Add(new Attachment("C:\\file.zip")); using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587)) { smtp.Credentials = new NetworkCredential("[email protected]", "password"); smtp.EnableSsl = true; smtp.Send(mail); } }

——————-
Информация, предоставленная Майклом Фрейдзимом ниже в области комментариев:
Подобный ответ со скриншотами https://stackoverflow.com/a/32457468/52277

Убедитесь, что вы установили SmtpClient.Credentials после вызова SmtpClient.UseDefaultCredentials = false .

Порядок важен как установка SmtpClient.UseDefaultCredentials = false сбросит значение SmtpClient.Credentials на null.

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

  1. Используйте smtp.gmail.com вместо smtp.google.com
  2. Использовать порт 587
  3. Установите client.UseDefaultCredentials = false; перед установкой учетных данных
  4. Включите доступ для менее безопасных приложений
  5. Установите client.EnableSsl = true;

Если эти шаги не помогли, проверьте этот ответ .
Возможно, вы также можете найти что-то полезное в этом FAQ System.Net.Mail .

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

Попробуйте это, я просто сделал некоторые легкие изменения:

 MailMessage msg = new MailMessage(); msg.From = new MailAddress("[email protected]"); msg.To.Add("[email protected]"); msg.Subject = "test"; msg.Body = "Test Content"; //msg.Priority = MailPriority.High; using (SmtpClient client = new SmtpClient()) { client.EnableSsl = true; client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential("[email protected]", "mypassword"); client.Host = "smtp.gmail.com"; client.Port = 587; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.Send(msg); } 

Также, пожалуйста, покажите свой файл app.config, если у вас есть настройки почты.

Я столкнулся с той же проблемой, даже если установить «UseDefaultCredentials» в false. Позже я обнаружил, что основной причиной является то, что я включил «2-ступенчатую проверку» в своей учетной записи. После того, как я выключил его, проблема исчезла.

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

  MailMessage mail = new MailMessage(); mail.From = new MailAddress("[email protected]"); mail.Sender = new MailAddress("[email protected]"); mail.To.Add("[email protected]"); mail.IsBodyHtml = true; mail.Subject = "Email Sent"; mail.Body = "Body content from"; SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587); smtp.UseDefaultCredentials = false; smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "xx"); smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.EnableSsl = true; smtp.Timeout = 30000; try { smtp.Send(mail); } catch (SmtpException e) { textBox1.Text= e.Message; } 

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

  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 += " "; mail.Body += ""; mail.Body += ""; mail.Body += ""; mail.Body += ""; mail.Body += ""; mail.Body += ""; mail.Body += ""; mail.Body += ""; mail.Body += "
User Name : HAi
Password : aaaaaaaaaa
"; mail.Body += ""; mail.Body += ""; mail.IsBodyHtml = true; SmtpServer.Port = 587; SmtpServer.Credentials = new System.Net.NetworkCredential("sendfrommailaddress.com", "password"); SmtpServer.EnableSsl = true; SmtpServer.Send(mail);

Вы можете отправить его в Отправлять почту

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

Вы должны рассмотреть возможность указать данные конфигурации SMTP в файле конфигурации и не перезаписывать их в коде – см. Данные конфигурации SMTP по адресу http://www.systemnetmail.com/faq/4.1.aspx

        

Включите менее безопасное приложение из этой ссылки и бум …

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

 public static void SendEmail(string address, string subject, string message, string email, string username, string password, string smtp, int port) { var loginInfo = new NetworkCredential(username, password); var msg = new MailMessage(); var smtpClient = new SmtpClient(smtp, port); msg.From = new MailAddress(email); msg.To.Add(new MailAddress(address)); msg.Subject = subject; msg.Body = message; msg.IsBodyHtml = true; smtpClient.EnableSsl = true; smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = loginInfo; smtpClient.Send(msg); } 

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

вызов этого метода может быть выполнен следующим образом:

 SendEmail("[email protected]", "test", "Hi it worked!!", "from-mail", "from-username", "from-password", "smtp", 587); 

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

 client.Credentials = new NetworkCredential("mymailid", "mypassword"); 

вместо:

 client.Credentials = new NetworkCredential("mymailid", "mypassword", "smtp.gmail.com"); 
  • Отправка электронной почты через gmail smtp-сервер в JAVA
  • Нужен легкий, бесплатный, SMTP-сервер Windows
  • Принтер не может использовать SMTP-сервер Gmail
  • Как я могу сделать SMTP аутентифицированным в C #
  • XAMPP Sendmail с использованием учетной записи Gmail
  • Специальные символы в ssmtp-пароле
  • как я могу заставить TcpListener принимать несколько соединений и работать с каждым отдельно?
  • Отправка почты в андроид без использования SMTP
  • Как отправить электронную почту в ASP.NET C #
  • Отправка электронной почты в .NET через Gmail
  • Тестирование SMTP-сервера выполняется через C #
  • Interesting Posts

    Как KeyListener обнаруживает комбинации клавиш (например, ALT + 1 + 1)

    Можно ли использовать URI данных в видео и аудио тегах?

    Как переместить большие файлы с помощью RestTemplate?

    Как получить NTFS, как поведение моментальных снимков в BTRFS?

    Ярлык клавиатуры для перемещения окна на другой экран

    Может ли Spring Security использовать @PreAuthorize для методов весенних controllerов?

    Изменение порядка сортировки по умолчанию в Thunderbird

    Можно ли отключить сообщение «сканировать и исправить» при вставке SD-карты?

    Использование rand () stdlib из нескольких streamов

    Windows 10 Insider Preview: Могу ли я заставить обновление?

    Как обернуть длинный текст в прядильщик

    Angularjs обещает не привязываться к шаблону в 1.2

    Как использовать существующий MongoDB в проекте Meteor?

    Как исправить 512-байтовый сектор MBR на диске диска 4096 байт?

    Почему мой Интернет медленно сканируется, если я не перезагружаю маршрутизатор каждые несколько дней?

    Давайте будем гением компьютера.