如何禁用中继并将我的代码用作经过身份验证的客户端
本文关键字:经过 身份验证 客户端 代码 我的 何禁用 | 更新日期: 2023-09-27 18:22:50
所以我收到了很多关于这个错误的帖子。但大多数都与IIS打交道。
邮箱不可用。服务器响应为:5.7.1无法中继
我已经将我的代码移植到控制台,看看我是否仍然会收到这个错误,我确实收到了。即使这是一个控制台应用程序,它似乎仍然在使用ISS作为中继或其他什么?
我已经和Exchange管理员谈过了,他不会打开邮件服务器进行任何中继,也不会允许我的服务器这样做。所以我想让我的C#代码作为一个经过身份验证的常规客户端发送电子邮件,就好像它是outlook一样。
如果我将下面的代码发送给我自己域内的某个人,但如果收件人在域外,则不会。
如何禁用中继并将我的代码用作经过身份验证的客户端,以便向域外的人发送电子邮件
代码:
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设置一样。
我猜身份验证失败了。请尝试包含域名。
_SMTPServer.Credentials =
new System.Net.NetworkCredential("myusername", "mypassword", "mydomain");
此外,请确保将UseDefaultCredentials设置为false
_SMTPServer.UseDefaultCredentials = false;