我知道有各种与此问题相关的线程,但我无法在这些线程上获取任何响应并使其在我的服务器上运行。
因此,让我们尝试看看是否有人可以在这里帮助我。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:dns;机器 1
从 MTA 接收:dns;机器 1
到达日期:2012 年 5 月 30 日星期三 23:08:36 -0700
最终收件人:rfc822;test@email.net
操作:失败
状态:5.5。 0
诊断代码:smtp;550 访问被拒绝 - HELO 名称无效(请参阅 RFC2821 4.1.1.1)
通过电子邮件返回的回复信息是:
> This is an automatically generated Delivery Status Notification.
Delivery to the following recipients failed.
test@email.com
提前致谢...