如何解决OpenPop.Net身份验证异常

时间:2011-08-05 17:51:15

标签: c# asp.net openpop

我正在使用OpenPop.Net连接到C#应用程序中的GoDaddy托管电子邮件帐户。 Authenticate()方法抛出异常,并显示错误消息“用于检索响应的流已关闭”。我加倍检查POPServer,POPPort,POPUserName和POPPassword值是否有效使用Outlook 2007。

using (Pop3Client pop3 = new Pop3Client())
{
    pop3.Connect(POPServer, POPPort, false);
    pop3.Authenticate(POPUserName, POPPassword);

    Int32 messageCount = pop3.GetMessageCount();
}

1 个答案:

答案 0 :(得分:10)

Authenticate()方法支持第三个参数,一个名为AuthenticationMethod的枚举。根据帮助文件,如果未传递第3个参数,则Authenticate()方法默认为Auto的身份验证方法。帮助文件继续说要使用Auto方法进行身份验证。如果服务器支持Apop,则使用Apop进行身份验证。如果不支持Apop,则Auto将回退到UsernameAndPassword身份验证。

我尝试显式传递Auto,而Authenticate()方法失败并出现相同的错误。然后我尝试显式传递UsernameAndPassword,这次它起作用了。我不确定这是OpenPop.Net中的错误还是POP服务器的问题。这是工作代码。

using (Pop3Client pop3 = new Pop3Client())
{
    pop3.Connect(POPServer, POPPort, false);
    pop3.Authenticate(POPUserName, POPPassword, AuthenticationMethod.UsernameAndPassword);

    Int32 messageCount = pop3.GetMessageCount();
}