我遇到了一个问题,我不知道它是否在我这边设置不正确,或者新 NetworkCredential 的签名是否存在大问题。
先说一点历史,我有一个我在 .NET 框架 2 中编写的应用程序,它通过 smtp 发送电子邮件。为了发送电子邮件,它使用活动目录凭据向服务器进行身份验证。我只是将其设置如下:
smtp.Credentials = New Net.NetworkCredential(domain & "\" & username, password)
这工作正常,直到我更新应用程序以在 .NET 框架 4 中运行时遇到错误:“邮箱不可用,服务器响应为 5.7.1,客户端无权作为此发件人发送。”
我环顾四周,发现由于某种原因,这在 .NET 框架 4 中无法正常工作,并且使用了指定域的重载。
我第一次尝试:
smtp.Credentials = New Net.NetworkCredential(username, password, domain)
这给出了同样的错误,即使所有的信息都是正确的。我的同事在使用不同的应用程序时遇到了同样的问题,并且由于运气或错误发现:
smtp.Credentials = New Net.NetworkCredential(username, domain, password)
工作正常,并将验证并发送电子邮件。现在上面的签名违背了所有的文档,所以我决定调查并发现以下内容:
Dim NetCred As NetworkCredential = New NetworkCredential()
With NetCred
.Username = username
.Domain = domain
.Password = password
End With
以上失败并显示与以前相同的错误消息(5.7.1)
Dim NetCred As NetworkCredential = New NetworkCredential()
With NetCred
.Username = username
.Domain = password
.Password = domain
End With
以上成功发送电子邮件并正确验证。
谁能想到这可能发生的任何原因?我正在运行最新版本的 Visual Studio 2010,其中安装了所有 .net 框架版本并且是最新版本。
谢谢你的帮助。