我正致力于IMAP,阅读邮件内容我得到了相同邮件内容的两倍或三倍。
我查看了不同的不同场景,所以我知道Response()给了我重复性 内容。
我正在这样传递命令。
byte[] commandBytes = System.Text.Encoding.ASCII.GetBytes(("$ UID FETCH " + index + " (BODY[HEADER.FIELDS (SUBJECT FROM DATE)])" + "\r\n").ToCharArray());
_imapNs.Write(commandBytes, 0, commandBytes.Length);
_imapNs.Flush();
string strMsg = Response();
我的Stream和TcpClient成员是。
private TcpClient _imapClient;
private Stream _imapNs;
我的Response方法就在这里。
private string Response()
{
byte[] data = new byte[_imapClient.ReceiveBufferSize];
int ret = _imapNs.Read(data, 0, data.Length);
return Encoding.ASCII.GetString(data);
}
一旦我检查了这个完整的循环,那么我就知道Response()方法给了我重复的内容所以有没有任何解决方案......
...谢谢!
答案 0 :(得分:2)
您的代码无法正常运行。
您假设服务器响应小于_imapClient.ReceiveBufferSize。为什么呢?
服务器响应可能长达50 MB。只需调用Stream.Read方法,就无法读取它。
答案 1 :(得分:0)
我建议您使用C#中可用的众多库中的一个(我假设您使用的是由于示例的语法 - 您没有指定)。
查看现有的StackOverflow问题。
Using C# .NET librarires to check for IMAP messages from GMail servers
答案 2 :(得分:-1)
我得到了解决方案,因为我想在循环中做所有的事情,我在循环之外做所有的事情谢谢.. !!