0

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

因此,让我们尝试看看是否有人可以在这里帮助我。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

提前致谢...

4

2 回答 2

1

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

在我看来,您的服务器已接受该消息,但在继续传输时出错。如果您的服务器拒绝了它,您的代码将引发异常。因此,您的服务器 Machine1 接受了它,并试图将其传输到 email.net,但 email.net 拒绝了它。Machine1 然后生成了一个 DSN(交付状态通知,在您的情况下为 NDR = 未交付报告)。

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

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

于 2012-05-31T07:10:41.593 回答
0

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

主要是为了找出您的 FQDN,您只需:1)打开命令提示符 2)键入“ipconfig /all”

阅读您的主机名 + 主要 DNS 后缀。

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

然后重新启动机器。

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

于 2012-05-31T08:22:39.997 回答