【问题标题】:c# POP3 client implementationc# POP3客户端实现
【发布时间】:2018-03-02 03:49:15
【问题描述】:

我正在尝试在 C# 中实现一个 POP3 客户端,而使用 AUTH PLAIN 的身份验证让我很头疼。我在 pop3.live.com 上使用我的帐户进行测试,但无法通过身份验证。我尝试通过 SSL 通过端口 995 和常规 110 进行连接(然后切换到 TLS),但无法通过身份验证。

我正在使用 TcpClient 类建立连接并从服务器获得 +OK 响应。在进行非 SSL 连接时,我使用命令 CAPA 检查功能,并获得响应 STLS。所以我发送命令 STLS,切换到 SslStream,发送另一个 CAPA 命令来检查身份验证机制并获取支持 SASL PLAIN(常规连接中没有)。

现在我不知道用 AUTH PLAIN 发送什么 - 我尝试发送 base64 "account\0account@hotmail.com\0password", "\0account@hotmail.com\0password", "\0account\0password " ...所有可能的组合,但是在发送符合 AUTH PLAIN 的凭证时会出现“协议错误”,或者在发送 AUTH PLAIN 后发送凭证时会出现“未授权 ...”(按预期返回“+”)。

我错过了什么吗?谁能提供使用 SSL/TLS 时如何进行身份验证的示例?

谢谢!

【问题讨论】:

    标签: c# authentication ssl tls1.2 pop3


    【解决方案1】:

    您需要使用“\0account@hotmail.com\0password”

    【讨论】:

    • 我确实尝试过,但收到“协议错误。16”,所以我假设在发送 AUTH PLAIN 之前我错过了一些东西。
    • 你需要用字节数组来表示那个序列,而不是字符串。
    • 是的,没有其他方法可以写入流。我尝试了不同的编码(UTF8、ASCII),无论是否转换为base64,但都没有成功。
    • 你需要base64编码。我的 PLAIN auth 实现工作得很好,所以你一定做错了什么。
    猜你喜欢
    • 2010-12-10
    • 2011-01-11
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 2010-11-08
    • 2022-11-04
    • 2011-05-11
    相关资源
    最近更新 更多