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

Fra*_*rez 1 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();
}
Run Code Online (Sandbox Code Playgroud)

Fra*_*rez 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();
}
Run Code Online (Sandbox Code Playgroud)

  • 你好.我是OpenPop的开发人员.这是一个已知的问题.问题是POP3服务器正确地告诉POP3客户端(这里是OpenPop)它支持APOP - 但实际上没有,因此当服务器尝试使用APOP方法登录时失败.据我所知,大多数服务器正确地告诉客户端它是否支持APOP.很高兴您自己找到了解决方案.也许帮助文件中的注释可以帮助下一个人解决您的问题.会做 :) (3认同)