【问题标题】:System.Net.Mail.SmtpFailedRecipientException: Mailbox name not allowedSystem.Net.Mail.SmtpFailedRecipientException:不允许邮箱名称
【发布时间】:2012-04-23 14:33:07
【问题描述】:

我编写了 ASP.Net 代码来从 domain1.com 邮件帐户(例如 abc@domain1.com)发送邮件。否则此代码可以正常工作,并且邮件会发送。但是,当在 domain2.com 上执行相同的代码时,即使使用正确的 userid-pwd 也会出现以下错误:

System.Net.Mail.SmtpFailedRecipientException:不允许使用邮箱名称。服务器响应是:抱歉,该域不在我在 System.Net.Mail.SmtpClient.Send(MailMessage message) 允许的 rcpthosts (#5.7.1) 列表中

有没有办法解决这个问题?

如果我们必须将此域添加到允许的 rcphosts 列表中,该怎么做?

编写的代码是这样的:

MailMessage message;
bool success;
message = new MailMessage(from, to);
Attachment file;
SmtpClient lclient;


lclient = new SmtpClient("mail.domain1.com", 587);
lclient.EnableSsl = false;

message.Body = body;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.IsBodyHtml = true;
message.Subject = subject;
message.SubjectEncoding = System.Text.Encoding.UTF8;

lclient.SendCompleted += new 
SendCompletedEventHandler(SendCompletedCallback);
lclient.UseDefaultCredentials = false;
lclient.Credentials = new NetworkCredential(userID, password);
try
{

  lclient.Send(message);
  success = true;
  if (message != null)
      message.Dispose();
  success = true;
  return (success);
}
catch (Exception ex)
{  
    //...
}

谢谢

【问题讨论】:

    标签: asp.net smtpclient


    【解决方案1】:

    代码运行良好。该错误是来自 SMTP 服务器的拒绝。从 Domain1 访问服务器时,似乎允许您通过它转发邮件。从 Domain2 访问时,它不会。更改这将是 SMTP 服务器上的配置。

    请注意,这是 SMTP 服务的常见做法。他们通常不允许任何人通过他们向任何地址发送邮件。 (这会使它们对垃圾邮件发送者和其他此类不需要的活动敞开大门。)因此,如果您尝试从 Domain1 外部访问 Domain1 的 SMTP 服务,它可能只是拒绝。

    【讨论】:

    • 谢谢,大卫。是否可以更改此配置?或者我们可能只需要稍微改变设计以适应这一点。
    • @AnuradhaKulkarni:您也许可以更改配置,但这确实超出了我可以帮助的范围。那是服务器管理,完全取决于您使用的 SMTP 服务。如果您需要重新设计一点,您可以尝试在允许电子邮件的主机上运行 Web 服务,并让您的其他实例只访问该服务以发送邮件而不是直接发送邮件。
    猜你喜欢
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 2018-10-28
    • 2022-08-23
    • 2012-02-07
    • 2019-10-27
    • 1970-01-01
    • 2019-10-28
    相关资源
    最近更新 更多