我正在尝试制作可以阅读电子邮件的内容,但我无法正常工作。这段代码:
TcpClient c = new TcpClient();
c.Connect("imap.gmail.com", 993);
NetworkStream stream = c.GetStream();
stream.ReadTimeout = 1000;
stream.ReadByte();
接缝是我下载的任何代码中断的地方。最后一行抛出IOException并显示以下消息:“无法从传输连接读取数据:连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而建立连接失败。 “
我愿意接受第三方程序,该程序会以我能阅读的格式自动下载电子邮件。我已经让Thunderbird连接到gmail,所以问题就在我的最后。
答案 0 :(得分:0)
您正在连接SSL端口。如果您没有进行正确的SSL握手,它将在不发送任何数据后立即关闭连接。
答案 1 :(得分:0)
该消息表明远程服务器没有响应。它没有说“这个港口没有连接”。它没有说“我关闭连接”。它没有说什么。
这意味着您甚至无法在TCP级别上创建连接。试试这个:
telnet imap.gmail.com 993
它会失败。所以它与你的应用程序无关。
答案 2 :(得分:0)
使用openssl连接到gmail。这是让你完成任务的简单方法。
答案 3 :(得分:0)
Gmail IMAP使用SSL,因此您需要使用SslStream
包装网络流并调用AuthenticateAsClient
方法(以便它执行SSL握手/服务器身份验证魔术)。之后,您将与它进行交互,就好像它是正常的(非SSL)流:
TcpClient c = new TcpClient();
c.Connect("imap.gmail.com", 993);
SslStream sslStream = new SslStream(c.GetStream());
sslStream.ReadTimeout = 1000;
sslStream.AuthenticateAsClient("imap.gmail.com");
sslStream.ReadByte();