我编写了ASP.Net代码,用于从domain1.com邮箱帐户发送邮件,例如abc@domain1.com。这段代码工作正常,邮件就行了。但是当在domain2.com上执行相同的代码时,即使使用正确的userid-pwd,它也会出现以下错误:
System.Net.Mail.SmtpFailedRecipientException:不允许使用邮箱名称。服务器响应是:抱歉,该域不在我的System.Net.Mail.SmtpClient.Send(MailMessage消息)中允许的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)
{
//...
}
由于
答案 0 :(得分:5)
代码工作正常。该错误是SMTP服务器的拒绝。从Domain1访问服务器似乎允许您通过它转发邮件。从Domain2访问时,它不会。更改此项将是SMTP服务器上的配置。
请注意,这是SMTP服务的常见做法。他们通常不允许任何人通过他们发送邮件到任何地址。 (这会使他们对垃圾邮件发送者和其他此类不受欢迎的活动敞开大门。)因此,如果您尝试从Domain1外部访问Domain1的SMTP服务,那么可能只是拒绝它。