.NET SMTP邮件 - error = helo命令被拒绝需要完全限定的主机名

时间:2012-10-25 06:07:02

标签: c# smtp hostname fully-qualified-naming

我正在尝试在.NET控制台应用程序中发送电子邮件。我有一个i.P的SMTP服务器。地址X.X.X.X(为了保护无辜者而进行消毒)。

已设置SMTP服务器(已配置中继)以允许来自托管.NET控制台应用程序的服务器的电子邮件,并将该电子邮件发送到外部世界。

我已经通过托管控制台应用程序的服务器上的telnet对此进行了测试。我使用SMTP服务器的I.P.从托管控制台应用程序的服务器成功发送了一封带有telnet控制台的电子邮件。地址。使用telnet时无需身份验证。我没有获得任何连接凭据。

但是当我尝试在.NET应用程序中执行此操作时,我收到以下错误:

  

Syntaz错误,命令无法识别。服务器响应是:Helo命令被拒绝:需要完全限定的主机名

这是我的代码:

string mailMessagetest = "test";
        string subjecttest = "test";
        List<string> recipienttest = new List<string>();
        recipienttest.Add("me@mydomain.com");

        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("myfriend@mydomain.com");

        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);
    }

2 个答案:

答案 0 :(得分:5)

将主机名从IP地址更改为其名称,例如“smtp.provider.com”或其内部“mailserver.domain”。

<强>更新

请尝试阅读此system.net.mail.smtpclient fqdn required和此the FQDN is not sent when you send a HELO or EHLO

答案 1 :(得分:1)

在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