我整天都在研究这个问题而且我的智慧结束了!我根本无法让我的smtp服务器与我的Windows用户进行身份验证 - 我做错了什么?我一直收到错误:
SMTP服务器需要安全连接,否则客户端不需要 认证。服务器响应是:5.7.3客户端没有 认证
我的smtp设置为在访问选项卡中将身份验证设置为集成Windows身份验证:
我的中继限制设置为仅下面的列表,我已将127.0.0.1添加到列表中。我还检查了允许所有成功通过身份验证的计算机进行中继的方框,无论上面的列表如何:
其他所有内容仍设置为默认值。我的代码说:
var objMessage = new MailMessage("fromEmail@sometest.com", "toEmail@gmail.com");
// format subject and message
objMessage.Subject = "testing email";
objMessage.Body = "blah blah";
using (var client = new SmtpClient())
{
client.Host = "127.0.0.1";
client.Port = 25;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("SMTPuser", "mypassword");
client.Send(objMessage);
}
我在机器上使用匹配的密码创建了标准的Windows用户SMTPuser。我很困惑。这个Windows身份验证应该如何工作?我做错了什么假设?为什么我只能在所有安全级别设置为匿名时发送?
我想做的就是向任何域发送邮件(我不需要接收邮件),显然可以保护我的服务器免受垃圾邮件发送者使用它发送垃圾邮件。目前,唯一的合法访问应该来自localhost。从我所做的研究来看,似乎我可以通过将所有内容设置为匿名来实现我想要的,但是然后将连接限制为127.0.0.1并将中继限制限制为127.0.0.1 - 就是这样?我即将诉诸于此,但我真的很想了解这是如何工作的,特别是在我可能希望有一天远程访问smtp服务器的情况下。
我是否可以设置一个服务器,允许任何可以使用我的SMTPuser Windows登录进行身份验证的人能够使用我的smtp服务器向任何域发送电子邮件?
答案 0 :(得分:2)
您应该在SMTP服务中启用基本身份验证,因为SmtpClient类不使用集成Windows身份验证。
仅限127.0.0.1的SMTP服务访问权限也足够了,因为这样可以有效防止外部人员使用该服务。