Почта .NET SMTP - ошибка = команда helo отклонена, требуется полное имя хоста

Я пытаюсь отправить электронное письмо в консольном приложении .NET. У меня есть SMTP-сервер с i.P. адрес X.X.X.X (продезинфицирован для защиты невиновных).

SMTP-сервер настроен (ретранслятор настроен), чтобы разрешить отправку электронной почты с сервера, на котором размещено консольное приложение .NET, и отправить эту электронную почту во внешний мир.

Я проверил это с помощью telnet с сервера, на котором размещено консольное приложение. Я успешно отправил электронное письмо с помощью консоли telnet с сервера, на котором размещено консольное приложение, используя IP-адрес SMTP-сервера. адрес. При использовании telnet аутентификация не требуется. Мне не дали никаких учетных данных для подключения.

Но когда я пытаюсь сделать это в приложении .NET, я получаю следующую ошибку:

Ошибка синтаксиса, команда не распознана. Ответ сервера был: : Команда Helo отклонена: нужно полное имя хоста

Вот мой код:

string mailMessagetest = "test";
        string subjecttest = "test";
        List<string> recipienttest = new List<string>();
        recipienttest.Add("[email protected]");

        utility.SendMail(recipienttest, subjecttest, mailMessagetest);

Вот функция SendMail:

        public static void SendMail(List<string> recipient, string subject, string message)
    {
        MailMessage mailMessage = new MailMessage();
        mailMessage.From = new MailAddress("[email protected]");

        foreach (string to in recipient)
        {
            mailMessage.To.Add(to);
        }

        mailMessage.Subject = subject;
        mailMessage.Body = message;

        SmtpClient client = new SmtpClient();
        client.Host = "X.X.X.X";
        client.Port = 25;
        client.Send(mailMessage);
    }

person richard    schedule 25.10.2012    source источник


Ответы (2)


Измените имя хоста с IP-адреса на его имя, например. "smtp.provider.com" или если это внутренний "mailserver.domain".

ОБНОВЛЕНИЕ:

Попробуйте прочитать этот system.net .mail.smtpclient требуется полное доменное имя, и это полное доменное имя не отправляется при отправке ПРИВЕТ или EHLO.

person Peter Larsen 'CPH'    schedule 25.10.2012
comment
Я пробовал это. Я использовал то, что я думаю, это полное доменное имя. Я проверю завтра, если я использую правильный. - person richard; 25.10.2012
comment
Я думаю, что вы правы насчет полного доменного имени — попробуйте прочитать ссылки выше. - person Peter Larsen 'CPH'; 26.10.2012
comment
Вторая ссылка, по-видимому, специфична для .net 2.0. Если вы используете более новую версию, вам не нужно устанавливать исправление, но вы должны применить изменения в app.config. - person Anders Jakobsen; 02.09.2013

Создайте пользователя с паролем на вашем SMTP-сервере, затем примените следующие настройки:

        smtp.UseDefaultCredentials = false;
        smtp.Credentials = new NetworkCredential("user", "pass");
        smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtp.Port = 25;
        smtp.EnableSsl = true; // or false depending your server
person Mohsen Afshin    schedule 25.10.2012
comment
Как это поможет? Администратор дал мне коробку без каких-либо требований авторизации.\ - person richard; 25.10.2012
comment
поэтому установите UseDefaultCredentials = true и удалите вторую строку и повторите попытку. - person Mohsen Afshin; 25.10.2012
comment
Спасибо Мохсен. Это то, что я изначально пытался безуспешно. - person richard; 26.10.2012