c# - 通过 SMTP 发送电子邮件失败 : MailBox name not allowed

标签 c# visual-studio-2010 smtp system.net

我正在尝试通过 SMTP 服务器发送电子邮件,但失败并出现以下错误:

MailBox name not allowed. The server response was Senders must have valid reverse DNS

enter image description here 不幸的是我找不到有意义的信息来解决问题

这是我的方法:

public void SendSmtp()
{
    try
    {
        using (MailMessage message = new MailMessage())
        {
            message.From = new MailAddress("some@email.com");
            message.To.Add(new MailAddress("other@email.com"));


            message.Subject = "subject";
            message.Body = "body";
            message.IsBodyHtml = true;

            // NetworkCredential basicCredential = new NetworkCredential("test@test.com", "password");
            try
            {
                using (SmtpClient client = new SmtpClient())
                {
                    client.Host = "mail.host.com";
                    client.Port = 25;
                    client.UseDefaultCredentials = true;
                    //  client.Credentials = basicCredential;
                    client.Send(message);
                    MessageBox.Show("Success!!");
                }

            }

            finally
            {
                //dispose the client
                message.Dispose();
            }

        }
    }
    catch (SmtpFailedRecipientsException ex)
    {
        for (int i = 0; i < ex.InnerExceptions.Length; i++)
        {
            SmtpStatusCode status = ex.InnerExceptions[i].StatusCode;
            if (status == SmtpStatusCode.MailboxBusy ||
                status == SmtpStatusCode.MailboxUnavailable)
            {
                Console.WriteLine("Delivery failed - retrying in 5 seconds.");
                System.Threading.Thread.Sleep(5000);
                //client.Send(message);
            }
            else
            {
                Console.WriteLine("Failed to deliver message to {0}",
                    ex.InnerExceptions[i].FailedRecipient);
            }
        }
    }
}

当我在不同的服务器或我的本地机器上尝试时,效果很好,我不确定为什么。 我设置了我的 SMTP 授权访问我的服务器。 请指教。

最佳答案

该错误是您的代码尝试连接到的 SMTP 服务器的直接响应。您的客户端计算机没有有效的反向 DNS 映射(例如 127.0.0.1 -> localhost),因此 SMTP 服务器拒绝连接。

它可能像您的客户端将自己标识为 example.com 一样简单,但是当 SMTP 服务器进行反向查找时,服务器的 IP 返回为 system-1-2 -3.4.hostingprovider.com 或类似网站。

关于c# - 通过 SMTP 发送电子邮件失败 : MailBox name not allowed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17754200/

相关文章:

python - 错误 : SMTPRecipientsRefused 553, '5.7.1 #while working on contact form in django

c# - 在函数参数中使用多个谓词?

c# - 如何覆盖 MassTransit 默认交换和队列拓扑约定?

c# - 获取程序集路径而不是程序集运行的临时路径

vb.net - Dockstyle 填充面板在顶部/底部停靠面板后面滑动

asp.net - 编译 ASP.NET 应用程序 - 网站与 Web 应用程序 - 具有指定 dll 名称的占位符 aspx 文件

python - 使用 mandrill 和 django 进行电子邮件转发和跟踪

c# - 更新启动器应用程序 C#

c# - 有没有一种简洁的方式来装饰匿名类型?

php - wordpress 上的 sslv3 警报握手失败