C# 邮件程序 - 550 访问被拒绝 - 无效的 HELO 名称

本文关键字:无效 拒绝 名称 HELO 访问 程序 | 更新日期: 2023-09-27 18:35:55

我知道有各种线程与此问题相关,但我无法获取这些线程上的任何响应并使其在我的服务器上工作。

所以让我们试着看看是否有人可以帮助我。99%的电子邮件正确发出,很少有人真正返回该错误。

我的代码看起来像这样

        MailMessage mm = new MailMessage(Settings.EmailCustomerService, to, subject, body);
        mm.SubjectEncoding = Encoding.UTF8;
        mm.BodyEncoding = Encoding.UTF8;
        mm.IsBodyHtml = true;
        MailAddress add = new MailAddress(Settings.EmailCustomerService, "Customer Service");
        mm.From = add;
        try
        {
            SmtpClient client = new SmtpClient(Settings.EmailSMTP);
            client.UseDefaultCredentials = false;
            client.Credentials = new NetworkCredential(Settings.EmailUser, Settings.EmailPwd); 
            System.Threading.ParameterizedThreadStart threadStart = new System.Threading.ParameterizedThreadStart(SendInThread);
            threadStart.Invoke(new SendInThreadParams
            {
                client = client,
                Message = mm
            });
        }
        finally
        {
            mm = null;
        }

实际上凭据代码是后来添加的,但即使没有它,我的代码也能正常运行。碰巧的是,1%的电子邮件从未到达收件人,并且为凭据添加这2行并没有区别。

Settings.EmailUser只是运行SMTP的服务器上的用户,但我没有将其附加到任何地方。

我敢打赌这就是问题所在。

SMTP 服务器中继设置为使用 127.0.0.1,FQDN 只是计算机的名称(类似于"Machine1"...没有 domain.com 名称)

我得到的错误是这个

报告-MTA:域名系统;机器1
接收自 MTA:DNS;机器1
到达日期: 周三, 30 五月 2012 23:08:36 -0700
最终获奖者:rfc822;test@email.net
操作:失败
状态:5.5.0
诊断代码:smtp;550 访问被拒绝 - 无效的 HELO 名称(请参阅 4.1.1.1 RFC2821)

通过电子邮件返回的回复消息是:

   > This is an automatically generated Delivery Status Notification.  
   Delivery to the following recipients failed.  
   test@email.com

提前感谢...

C# 邮件程序 - 550 访问被拒绝 - 无效的 HELO 名称

除了邮件/传递状态附件外,DSN 通常还会有返回的邮件。对于此类问题,您还应发布返回的邮件和DSN的标头。

在我看来,您的服务器已接受该消息,但继续传输时出错。如果您的服务器拒绝了它,您的代码将引发异常。因此,您的服务器 Machine1 接受了它,试图将其传输到 email.net,但 email.net 拒绝了它。然后,计算机 1 生成了 DSN(传递状态通知,在本例中为 NDR = 未送达报告)。

换句话说,这是电子邮件服务器的配置错误,而不是代码问题。几乎可以肯定的是,问题在于电子邮件服务器没有像您所说的那样设置FQDN。

作为配置问题,它属于ServerFault。

根据 BEN 的回答,我意识到我缺少 PRIMARY DND 后缀。

主要是为了找出您的 FQDN,您需要简单地:1)打开命令提示符2) 输入 "ipconfig/all"

读取主机名 + 主 DNS 后缀。

我的 DNS 后缀是 emtpy 所以我使用此链接
添加http://www.simpledns.com/kb.aspx?kbid=1227

然后重新启动机器。

现在,代码就像一个魅力。谢谢本!!