Ответ сервера был: 5.7.57 SMTP; клиент не прошел проверку подлинности для отправки анонимной почты во время почты из

мне нужно отправить почту с помощью моего веб-приложения. Ниже приведен код, показывающий The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM ошибка. Помоги мне найти правильное решение. Спасибо.

код:

protected void btnsubmit_Click(object sender, EventArgs e)
 {

   Ticket_MailTableAdapters.tbl_TicketTableAdapter tc;
   tc = new Ticket_MailTableAdapters.tbl_TicketTableAdapter();
   DataTable dt = new DataTable();
   dt = tc.GetEmail(dpl_cate.SelectedValue);
   foreach (DataRow row in dt.Rows)
    {
    string eml = (row["Emp_Email"].ToString());
    var fromAddress = "emailAddress";
    var toAddress = eml;
    const string fromPassword = "*****";
    string body = "Welcome..";
 // smtp settings
    var smtp = new System.Net.Mail.SmtpClient();
       {
         smtp.Host = "smtp.office365.com";
         smtp.Port = 587;
         smtp.EnableSsl = true;

         smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
         smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
         smtp.UseDefaultCredentials = false;
         smtp.Timeout = 600000;
       }
  // Passing values to smtp object
     smtp.Send(fromAddress, toAddress, subject, body);
     }
  } 
 }

10 ответов


Я не могу быть хорошим программистом, но вы, похоже, передаете адрес From как "emailAddress", который не является правильным адресом электронной почты, а для Office365 from должен быть реальным адресом в системе Office365.

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


@Reshma-если вы еще не поняли, вот ниже вещи, которые я пробовал, и он решил ту же проблему.

  1. убедитесь, что NetworkCredentials вы установили правильно. Например, в моем случае, поскольку это был office SMTP, идентификатор пользователя должен был использоваться в NetworkCredential вместе с доменным именем, а не фактическим идентификатором электронной почты.

  2. вам нужно сначала установить" UseDefaultCredentials " в false, а затем установить учетные данные. Если вы установите "UseDefaultCredentials" после этого сбрасывает NetworkCredential в null.

надеюсь, что это помогает.


Я потратил слишком много времени на это, и решение было очень простым. Мне пришлось использовать мой " MX " в качестве хоста и порта 25.

        var sClient = new SmtpClient("domain-com.mail.protection.outlook.com");
        var message = new MailMessage();

        sClient.Port = 25;
        sClient.EnableSsl = true;
        sClient.Credentials = new NetworkCredential("user", "password");
        sClient.UseDefaultCredentials = false;

        message.Body = "Test";
        message.From = new MailAddress("test@test.com");
        message.Subject = "Test";
        message.CC.Add(new MailAddress("dude@good.com"));

        sClient.Send(message);

основные две причины только, как указано в комментариях выше

  1. NetworkCredentials, которые вы установили, должны быть правильными. Проверьте, с попробуйте войти в учетную запись.
  2. необходимо указать UseDefaultCredentials сначала false, а затем установить учетные данные Или Положи smtp.UseDefaultCredentials = false; выше smtp.Credentials assignment.

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

добавить домен решил его..

mySmtpClient.Credentials = New System.Net.NetworkCredential("email@domain.com", "password", "domain.com")

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

Я тоже потратил майские часы на этот вопрос. В конце концов мне пришлось изменить пароль учетной записи Office 365 несколько раз, пока мой код не удалось отправить электронные письма.

не пришлось вносить никаких изменений в код.


Если вы используете office 365, выполните следующие действия:

  1. проверьте срок действия пароля с помощью Azure power shell: Get-MsolUser-All / выберите DisplayName, LastPasswordChangeTimeStamp
  2. изменить пароль, используя новый пароль (не старый). Вы можете в конечном итоге вернуться к старому паролю, но нужно дважды менять.

надеюсь, что это помогает!


начал работать после добавления недвижимости:

mail.smtp.starttls.enable=true

использование:

mail.smtp.host=smtp.office365.com
mail.smtp.port=587
mail.transport.protocol=smtp
mail.smtp.auth=true
mail.smtp.starttls.enable=true
mail.smtp.user=xxx@example.com
mail.smtp.password=xxx
mail.smtp.from=yyy@example.com

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

Я использовал передний конец (опция database mail) и настройки как smtp.office365.com номер порта 587 и проверил опцию безопасного подключения. используйте обычную проверку подлинности и сохраните учетные данные. Надеюсь, это кому-то пригодится.


в моем случае я использовал конструктор MailMessage, который принимает две строки (to, from) и получает ту же ошибку. Когда я использовал конструктор по умолчанию, а затем добавил объект MailAddress в свойство To MailMessage, он работал нормально.