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
提前感谢...
除了邮件/传递状态附件外,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
然后重新启动机器。
现在,代码就像一个魅力。谢谢本!!