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

3
我正在尝试在.NET控制台应用程序中发送电子邮件。我有一个SMTP服务器,其i.P.地址为X.X.X.X(已经过处理以保护隐私)。
SMTP服务器已设置(中继已配置),以允许来自托管.NET控制台应用程序的服务器发送电子邮件到外部世界。
我已经通过托管控制台应用程序的服务器使用telnet进行了测试。我成功地使用SMTP服务器的I.P.地址从托管控制台应用程序的服务器上的telnet控制台发送了电子邮件。不需要使用telnet时进行身份验证。我没有收到任何连接凭据。
但是当我尝试在.NET应用程序中执行此操作时,出现以下错误:
语法错误,命令无法识别。服务器响应为::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个回答

5

我尝试过了。我使用了我认为是完全限定域名(fqdn)的内容。明天我会验证一下我是否使用了正确的内容。 - richard
我认为你关于FQDN是正确的 - 请尝试阅读上面的链接。 - Peter Larsen 'CPH'
第二个链接似乎是针对 .net 2.0 特定的。如果您使用更新的版本,则不需要安装热修复程序,但您应该将更改应用于 app.config。 - Anders Jakobsen

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

这会有什么帮助?管理员给了我这个盒子,没有任何授权要求。 - richard
所以将 UseDefaultCredentials 设置为 true,删除第二行,然后再试一次。 - Mohsen Afshin
谢谢Mohsen。这就是我最初尝试过但没有成功的方法。 - richard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接