无法使用System.Net.Mail.SmtpClient向其他域发送电子邮件

时间:2011-07-12 03:30:06

标签: c# asp.net smtpclient

请查看以下代码:

client.Credentials = new NetworkCredential(SMTP_SERVER_USERNAME, SMTP_SERVER_PASSWORD);
client.EnableSsl = false;
client.Host = SMTP_SERVER_HOSTNAME;
client.Port = 587;
client.UseDefaultCredentials = false;
client.Timeout = 4000;

MailMessage message = new MailMessage();
message.Body = "Test";
message.From = new MailAddress(MY_OWN_ADDRESS);
message.ReplyToList.Add(message.From);
message.Sender = message.From;
message.Subject = SUBJECT_LINE;
message.To.Add(RECIPIENT_ADDRESS);

我目前无法使用它发送电子邮件。代码驻留在使用旧ASPX引擎的ASP.NET MVC 3应用程序中。它在集成管道模式下使用ASP.NET 4.0在IIS7服务器上运行。

运行此代码时,会发生以下两种情况之一:

  • 如果RECIPIENT_ADDRESS等于MY_OWN_ADDRESS或我网域上的其他电子邮件地址,则电子邮件会发送,一切正常。
  • 但是,如果RECIPIENT_ADDRESS是其他服务器(例如gmail)上的任何电子邮件地址,或其他服务器,则在SmtpClient.Send期间会发生异常:

邮箱不可用。服务器响应是:中继需要验证

说明:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Net.Mail.SmtpFailedRecipientException:邮箱不可用。服务器响应是:中继

需要身份验证

1 个答案:

答案 0 :(得分:2)

我注意到你的message.To.Add(RECIPIENT_ADDRESS)可能是一个字符串。我以前遇到过这方面的问题。将其包裹在MailAddress对象中,它应该可以正常工作。