我正在尝试用 C# 编写 IMAP 客户端。我能够连接到主机,但之后无法获得预期的响应(例如,使用 LOGIN 或 CAPABILITY 等命令时)。
这是我的代码:
Socket socket = new(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress hostIP = Dns.GetHostAddresses(host)[0];
IPEndPoint ipEndPoint = new(hostIP, port);
socket.Connect(ipEndPoint);
SslStream sslStream = new(new NetworkStream(socket));
sslStream.AuthenticateAsClient(host);
byte[] buffer = new byte[4096];
int bytesReceived = sslStream.Read(buffer, 0, buffer.Length);
string response = Encoding.UTF8.GetString(buffer, 0, bytesReceived);
System.Diagnostics.Debug.WriteLine(response); // * OK IMAP4 ready
buffer = Encoding.UTF8.GetBytes("LOGIN [email protected] password\r\n");
sslStream.Write(buffer, 0, buffer.Length);
bytesReceived = sslStream.Read(buffer, 0, buffer.Length);
response = Encoding.UTF8.GetString(buffer, 0, bytesReceived);
System.Diagnostics.Debug.WriteLine(response); // LOGIN BAD invalid command
对可能出错的地方有什么建议吗? IMAP 服务器需要通过 SSL 和端口 993 连接,这两者都已提供。主机链接是正确的,它们允许登录并且登录命令应该有效。这一定是代码内部的问题。