0

我遇到了一个问题,我不知道它是否在我这边设置不正确,或者新 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 框架版本并且是最新版本。

谢谢你的帮助。

4

0 回答 0