所以我收到的这个错误有很多帖子。但大多数处理IIS。
邮箱不可用。服务器响应为:5.7.1无法中继
我已将我的代码移植到控制台以查看是否仍然出现此错误,而且我确实如此。虽然这是一个控制台应用程序,但它似乎仍然使用ISS作为中继或其他东西?
我已与Exchange管理员交谈,他不会打开邮件服务器进行任何中继或允许我的服务器这样做。所以我想让我的C#代码发送电子邮件作为常规认证客户端,就像它是outlook。
如果我将代码发送给我自己域内的某个人,则我的代码可以正常运行,但如果收件人不在域名内,则无法使用。
如何禁用转发并将我的代码用作经过身份验证的客户端,以便我可以向域外的人发送电子邮件?
CODE:
static void Main(string[] args)
{
Console.WriteLine("Sending Mail...");
try
{
SmtpClient _SMTPServer = new SmtpClient("companymailserver", 587);
_SMTPServer.Credentials = new System.Net.NetworkCredential("myusername", "mypassword");
MailMessage _mailMessage = new MailMessage();
_mailMessage.To.Add(new MailAddress("someone@gmail.com"));
_mailMessage.From = new MailAddress("myself@mycompanydomain.com");
_mailMessage.IsBodyHtml = false;
_mailMessage.Subject = "This is a test";
_mailMessage.Body = "This is the body";
_SMTPServer.Send(_mailMessage);
}
catch (Exception err)
{
Console.WriteLine("error: " + err.Message);
}
Console.WriteLine("Press any key to continue...");
Console.Read();
}
更新#1
奇怪的是,无论我使用什么凭据,我都会得到相同的“无法中继”错误。好像它是默认继承并忽略我的SmtpClient设置。
答案 0 :(得分:0)
我猜测验证失败了。尝试包含域名。
_SMTPServer.Credentials =
new System.Net.NetworkCredential("myusername", "mypassword", "mydomain");
另外,请务必将UseDefaultCredentials设置为false
_SMTPServer.UseDefaultCredentials = false;