【问题标题】:Troubleshooting "Mailbox unavailable. The server response was: Access denied - Invalid HELO name" when sending email with SmtpClient使用 SmtpClient 发送电子邮件时,“邮箱不可用。服务器响应为:访问被拒绝 - HELO 名称无效”疑难解答
【发布时间】:2010-07-01 05:13:31
【问题描述】:

我一直在尝试通过 C# 发送电子邮件。我在 Google 上搜索了各种示例,并从每个示例以及每个人最有可能使用的标准代码中提取了一些片段。

string to = "receiver@domain.com";
string from = "sender@domain.com";
string subject = "Hello World!";
string body =  "Hello Body!";
MailMessage message = new MailMessage(from, to, subject, body);
SmtpClient client = new SmtpClient("smtp.domain.com");
client.Credentials = new NetworkCredential("test@domain.com", "password");
client.Send(message);

但是,我不断收到错误提示

System.Net.Mail.SmtpException:邮箱 不可用。服务器响应是: 访问被拒绝 - HELO 名称无效(请参阅 RFC2821 4.1.1.1)

那么,我现在该怎么办? SmtpClient 应该是特殊的并且只在特定的 SMTP 服务器上工作吗?

【问题讨论】:

  • 看起来您尝试连接的任何服务器都需要您的客户端标识自己...
  • 这是错字吗? string to = receiver@domain.com;

标签: c# smtpclient


【解决方案1】:

似乎您的用户名/密码对没有通过您的 SMTP 服务器成功验证

编辑

我想,我发现这里有什么问题。我在下面更正了您的版本。

string to = "receiver@domain.com";

//It seems, your mail server demands to use the same email-id in SENDER as with which you're authenticating. 
//string from = "sender@domain.com";
string from = "test@domain.com";

string subject = "Hello World!";
string body =  "Hello Body!";
MailMessage message = new MailMessage(from, to, subject, body);
SmtpClient client = new SmtpClient("smtp.domain.com");
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("test@domain.com", "password");
client.Send(message);

【讨论】:

  • 在这种情况下,他的代码有问题。如果他的代码没有提供某些信息,那么代码就是“错误的”。
  • @Gertjan:是的,我同意你的看法。更新了答案。
  • 谢谢!那解决了!不知道这是在 SMTP 端设置的一些奇怪的设置。
  • @user303907:这个消息可能看起来很奇怪,但是客户端通过 HELO 命令识别服务器,所以如果服务器无法让你登录,他可以给你一个拒绝访问(发生了)和有些人可能会告诉你它发生在哪里(那是在对话的 HELO 部分)。
  • 我面临同样的问题。早些时候它工作,但现在客户抱怨这个问题。客户说他们没有更改任何设置。有什么建议吗?
【解决方案2】:

您是否尝试在 web.Config 中设置您的身份验证凭据?

  <system.net>
    <mailSettings>
      <smtp from="test@foo.com">
        <network host="smtpserver1" port="25" userName="username" password="secret" defaultCredentials="true" />
      </smtp>
    </mailSettings>
  </system.net>

还有你的代码

MailMessage message = new MailMessage();
message.From = new MailAddress("sender@foo.bar.com");
message.To.Add(new MailAddress("recipient1@foo.bar.com"));
message.To.Add(new MailAddress("recipient2@foo.bar.com"));
message.To.Add(new MailAddress("recipient3@foo.bar.com"));
message.CC.Add(new MailAddress("carboncopy@foo.bar.com"));
message.Subject = "This is my subject";
message.Body = "This is the content";
SmtpClient client = new SmtpClient();
client.Send(message);

【讨论】:

    【解决方案3】:

    试试这个:

    string to = "receiver@domain.com";
    string from = "sender@domain.com";
    string subject = "Hello World!";
    string body =  "Hello Body!";
    MailMessage message = new MailMessage(from, to, subject, body);
    SmtpClient client = new SmtpClient("smtp.domain.com");
    // explicitly declare that you will be providing the credentials:
    client.UseDefaultCredentials = false;
    // drop the @domain stuff from your user name: (The API already knows the domain
    // from the construction of the SmtpClient instance
    client.Credentials = new NetworkCredential("test", "password");
    client.Send(message);
    

    【讨论】:

      【解决方案4】:

      就我而言,这是一个错误的端口。主机提供的配置不适用于 SSL (465) 和无 SSL (25)。 我使用 MS Outlook 来“破解”配置,然后复制到我的应用程序中。它是 587 SSL。

      【讨论】:

        【解决方案5】:

        如果您不设置 EnableSsl,可能会发生这种情况。

        client.EnableSsl = true;
        

        【讨论】:

        • 这解决了我的问题。在文档中,为非 ssl 连接写入了端口 587,但返回的是 HELO 错误。将 ssl 切换为 true 后,它起作用了:)
        【解决方案6】:

        如果您有一个可用的网络邮件客户端并且您看到一个 cPanel 徽标,它也可能是那里的一个设置。

        我们得到了例外,并要求我们的托管公司进入:

        "根 WHM > 服务配置 > Exim 配置管理器 > 基本编辑器 > ACL 选项"

        并将Require RFC-compliant HELO 设置为Off

        在修复下一个错误后,这对我们有用:

        在端口 587 上提交邮件需要 SMTP AUTH

        来源:

        https://serverfault.com/a/912351/293367

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-16
          • 2012-10-19
          • 1970-01-01
          • 2012-01-22
          • 1970-01-01
          • 1970-01-01
          • 2015-06-11
          • 2016-04-05
          相关资源
          最近更新 更多