Устранение неполадок "Почтовый ящик недоступен. Ответ сервера был: Access denied - Invalid HELO name" при отправке электронной почты с помощью SmtpClient
Я пытаюсь отправить электронное письмо на С#. У меня есть Googled для различных примеров и взяли бит и куски от каждого и от стандартного кода, который все, вероятно, будут наиболее вероятно использовать.
string to = "[email protected]";
string from = "[email protected]";
string subject = "Hello World!";
string body = "Hello Body!";
MailMessage message = new MailMessage(from, to, subject, body);
SmtpClient client = new SmtpClient("smtp.domain.com");
client.Credentials = new NetworkCredential("[email protected]", "password");
client.Send(message);
Однако я продолжаю получать сообщение об ошибке
System.Net.Mail.SmtpException: почтовый ящик недоступен. Ответ сервера: Доступ запрещен - Недействительное имя HELO (см. RFC2821 4.1.1.1)
Итак, что мне теперь делать? Предполагается ли, что SmtpClient является особенным и работает только на определенных SMTP-серверах?
Ответы
Ответ 1
Кажется, что ваша пара имя пользователя/пароль не аутентифицируется с вашим SMTP-сервером.
ИЗМЕНИТЬ
Думаю, я обнаружил, что здесь не так. Я скорректировал вашу версию ниже.
string to = "[email protected]";
//It seems, your mail server demands to use the same email-id in SENDER as with which you're authenticating.
//string from = "[email protected]";
string from = "[email protected]";
string subject = "Hello World!";
string body = "Hello Body!";
MailMessage message = new MailMessage(from, to, subject, body);
SmtpClient client = new SmtpClient("smtp.domain.com");
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("[email protected]", "password");
client.Send(message);
Ответ 2
Попробовали ли вы установить свои учетные данные в web.Config?
<system.net>
<mailSettings>
<smtp from="[email protected]">
<network host="smtpserver1" port="25" userName="username" password="secret" defaultCredentials="true" />
</smtp>
</mailSettings>
</system.net>
и ваш код за
MailMessage message = new MailMessage();
message.From = new MailAddress("[email protected]");
message.To.Add(new MailAddress("[email protected]"));
message.To.Add(new MailAddress("[email protected]"));
message.To.Add(new MailAddress("[email protected]"));
message.CC.Add(new MailAddress("[email protected]"));
message.Subject = "This is my subject";
message.Body = "This is the content";
SmtpClient client = new SmtpClient();
client.Send(message);
Ответ 3
Попробуйте следующее:
string to = "[email protected]";
string from = "[email protected]";
string subject = "Hello World!";
string body = "Hello Body!";
MailMessage message = new MailMessage(from, to, subject, body);
SmtpClient client = new SmtpClient("smtp.domain.com");
// explicitly declare that you will be providing the credentials:
client.UseDefaultCredentials = false;
// drop the @domain stuff from your user name: (The API already knows the domain
// from the construction of the SmtpClient instance
client.Credentials = new NetworkCredential("test", "password");
client.Send(message);
Ответ 4
В моем случае это был неправильный порт. Конфигурация, предоставляемая хостингом, не работала как с SSL (465), так и без SSL (25).
Я использовал MS Outlook для "взлома" конфигурации, а затем скопировал ее в свое приложение. Это было 587 SSL.
Ответ 5
encontré la solución después de mucho pelear..
ОТПРАВИТЬ ПОЧТУ С АУТЕНТИФИКАЦИЕЙ SMTP С ИСПОЛЬЗОВАНИЕМ ASP.NET
Отправка электронной почты с проверкой подлинности SMTP с использованием ASP.NET
В следующих кодах показано, как отправить электронное письмо с аутентификацией SMTP с использованием ASP.NET:
//create the mail message
MailMessage mail = new MailMessage();
//set the addresses
mail.From = new MailAddress("[email protected]"); //IMPORTANT: This must be same as your smtp authentication address.
mail.To.Add("[email protected]");
//set the content
mail.Subject = "This is an email";
mail.Body = "This is from system.net.mail using C sharp with smtp authentication.";
//send the message
SmtpClient smtp = new SmtpClient("mail.yourdomain.com");
//IMPORANT: Your smtp login email MUST be same as your FROM address.
NetworkCredential Credentials = new NetworkCredential("[email protected]", "password");
smtp.Credentials = Credentials;
smtp.Send(mail);
lblMessage.Text = "Mail Sent";
ПРИМЕЧАНИЕ. Обратите внимание, что вы не можете использовать System.Net.Mail.SmtpClient для отправки сообщения электронной почты с неявным SSL.