IMAP获得响应问题

时间:2011-02-21 06:46:58

标签: imap

我正致力于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()方法给了我重复的内容所以有没有任何解决方案......

...谢谢!

3 个答案:

答案 0 :(得分:2)

您的代码无法正常运行。

您假设服务器响应小于_imapClient.ReceiveBufferSize。为什么呢?

服务器响应可能长达50 MB。只需调用Stream.Read方法,就无法读取它。

答案 1 :(得分:0)

我建议您使用C#中可用的众多库中的一个(我假设您使用的是由于示例的语法 - 您没有指定)。

查看现有的StackOverflow问题。

Accessing IMAP in C#

Using C# .NET librarires to check for IMAP messages from GMail servers

答案 2 :(得分:-1)

我得到了解决方案,因为我想在循环中做所有的事情,我在循环之外做所有的事情谢谢.. !!