IMAP получает ответ на вопрос - PullRequest
0 голосов
/ 21 февраля 2011

Я работаю над 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;

и мой метод ответа здесь.

private string Response()
{
    byte[] data = new byte[_imapClient.ReceiveBufferSize];
    int ret = _imapNs.Read(data, 0, data.Length);
    return Encoding.ASCII.GetString(data);
}

Как только я проверил этот полный цикл, я узнал, что метод Response () дает мне повторяющееся содержимое, так что есть какое-то решение для этого .....

Спасибо ... !!

Ответы [ 3 ]

2 голосов
/ 23 февраля 2011

Ваш код не будет работать.

Вы предположили, что ответ сервера меньше, чем _imapClient.ReceiveBufferSize.Почему?

Ответ сервера может быть 50 МБ.Вы не сможете прочитать его одним вызовом метода Stream.Read.

0 голосов
/ 23 июня 2011

У меня есть Решение, потому что я хочу делать все внутри цикла, и я делаю все, что не в цикле. Спасибо .. !!

0 голосов
/ 23 февраля 2011

Я бы порекомендовал вам использовать одну из многих библиотек, доступных для C # (я предполагаю, что вы используете именно это из-за синтаксиса вашего примера - вы не указали).

Посмотрите на существующие вопросы StackOverflow.

Доступ к IMAP в C #

Использование библиотек C # .NET для проверки сообщений IMAP от серверов GMail

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...