System.Net.Mail.SmtpException: для SMTP-сервера требуется безопасное соединение или клиент не прошел проверку подлинности
Я пытаюсь отправить электронное письмо с адресом своего сайта из приложения С#.
Это работало отлично в течение нескольких месяцев до недавнего времени. (возможно, мой провайдер меняет некоторые вещи или кто-то другой изменил настройки)
Здесь код:
private void sendEmail(Email invite) {
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient(smtpServerName);
mail.From = new MailAddress(emailUsername);
mail.To.Add(invite.RecipientEmail);
mail.Subject = invite.MessageSubject;
mail.Body = invite.MessageBody;
SmtpServer.UseDefaultCredentials = false;
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);
// SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
}
Здесь ошибка:
Для SMTP-сервера требуется безопасное соединение, или клиент не прошел аутентификацию. Ответ сервера: Требуется проверка подлинности SMTP.
Глядя на другие вопросы, я попробовал, что они предложили, чтобы сделать SmtpServer.EnableSsl = true
. Это не сработало. Он дал следующее:
System.Net.Mail.SmtpException: сервер не поддерживает безопасные подключения.
Я предполагаю, что я должен отключить SSL и иметь его так, как раньше.
Любые предложения о том, как снова отправить электронную почту?
ИЗМЕНИТЬ
Я пробовал без SmtpServer.UseDefaultCredentials = false;
Я попытался с ним установить значение true: SmtpServer.UseDefaultCredentials =true;
Я пробовал комментировать эту строку вместе со следующим //SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);
Ответы
Ответ 1
Это сообщение об ошибке обычно вызвано одним из следующих:
- Неправильные настройки соединения, такие как неправильный порт, указанный для защищенного или незащищенного соединения.
- Неправильные учетные данные. Я бы проверил комбинацию имени пользователя и пароля, чтобы убедиться, что учетные данные верны.
Ответ 2
Я думаю, вам нужно установить DeliveryMethod = SmtpDeliveryMethod.Network
этот в настоящее время работает на моем ПК, просто я проверил, работает хорошо, попробуйте это
using System.Net;
using System.Net.Mail;
var fromAddress = new MailAddress("[email protected]", "From Name");
var toAddress = new MailAddress("[email protected]", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
Ответ 3
Если вы уверены, что ваше имя пользователя и пароль верны, но вы все равно получаете ошибки, это означает, что Gmail заблокировал ваше приложение.
Вы должны проверить переключатель "Включить" в следующую ссылку, относящуюся к вашей учетной записи gmail. Тогда он будет работать нормально.