Поиск и устранение неисправностей “Недоступного почтового ящика. Ответ сервера был: Доступ запрещен - Недопустимые HELO называют” при отправке электронного письма с SmtpClient

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

string to = "receiver@domain.com";
string from = "sender@domain.com";
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("test@domain.com", "password");
client.Send(message);

Однако я продолжаю получать ошибку при утверждении

Система. Сеть. Почта. SmtpException: недоступный Почтовый ящик. Ответ сервера был: Доступ запрещен - Недопустимое имя HELO (См. RFC2821 4.1.1.1),

Так, что я делаю теперь? SmtpClient, как предполагается, является особенным и только работает над определенными серверами SMTP?

10
задан Stephen Kennedy 7 March 2018 в 11:18
поделиться

3 ответа

Кажется, ваша пара имени пользователя и пароля не аутентифицируется успешно на вашем SMTP-сервере.

РЕДАКТИРОВАТЬ

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

string to = "receiver@domain.com";

//It seems, your mail server demands to use the same email-id in SENDER as with which you're authenticating. 
//string from = "sender@domain.com";
string from = "test@domain.com";

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("test@domain.com", "password");
client.Send(message);
8
ответ дан 3 December 2019 в 23:48
поделиться

Вы пробовали установить учетные данные в web.Config?

  <system.net>
    <mailSettings>
      <smtp from="test@foo.com">
        <network host="smtpserver1" port="25" userName="username" password="secret" defaultCredentials="true" />
      </smtp>
    </mailSettings>
  </system.net>

и ваш код за

MailMessage message = new MailMessage();
message.From = new MailAddress("sender@foo.bar.com");
message.To.Add(new MailAddress("recipient1@foo.bar.com"));
message.To.Add(new MailAddress("recipient2@foo.bar.com"));
message.To.Add(new MailAddress("recipient3@foo.bar.com"));
message.CC.Add(new MailAddress("carboncopy@foo.bar.com"));
message.Subject = "This is my subject";
message.Body = "This is the content";
SmtpClient client = new SmtpClient();
client.Send(message);
3
ответ дан 3 December 2019 в 23:48
поделиться

Try this:

string to = "receiver@domain.com";
string from = "sender@domain.com";
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);
2
ответ дан 3 December 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: