Устранение неполадок "Почтовый ящик недоступен. Ответ сервера был: 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.