2012-02-14 6 views
0

Я работаю над клиентом IMAP для получения писем от Gmail. Мое приложение отлично работало до тех пор, пока около часа назад, когда приложения перестали извлекаться.Gmail IMAP - Вложения не отображаются

Связь и обмен сообщениями обрабатываются imapX.

Подключения ХОРОШО Войти нормально Попадая папок является Удовлетворительными Получения сообщений ХОРОШО

На данный момент attachments.Count == 0. работавшего ранее этот день, так что я интересно, если я был более тестирования и Google занес в черный список свой компьютер некоторое время? Кто-нибудь знает, если это так? - Работал, возможно, один раз каждые 5-10 минут, может быть, порой, так что это может быть правдоподобным вопросом.

Я попытался отправить новое электронное письмо с совершенно новым файлом, и он все еще не видит вложения (но он (всегда) видит сами сообщения).

Может ли кто-нибудь пролить свет на эту проблему?

EDIT: заголовок включает следующий тег {[X-MS-ли-Attach, да]}

EDIT (код):

private void PollMailFolders(object state) 
    { 
     try 
     { 

      if(_imapClient == null || !_imapClient.IsConnected) 
       _imapClient = new ImapClient(_config.Server, _config.Port, true); 

      if (_imapClient.Connection()) 
      { 
       if(!_imapClient.IsLogined) 
        _imapClient.LogIn(_config.Username, _config.Password); 

       string dateSearch = string.Format(
        "SINCE {0:d-MMM-yyyy}{1}", DateTime.Today.AddDays(-_config.HistoryOnStartupDays), 
                _isFirstTime ? "" : " UNSEEN"); 

       _isFirstTime = false; 

       foreach (Folder folder in _imapClient.Folders["SSForecasts"].SubFolder) 
       { 
        var messages = _imapClient.Folders[folder.Name].Search(dateSearch, false); 

        foreach (Message m in messages) 
        { 
         m.Process(); 

         foreach (var a in m.Attachments) 
         { 
          SendDataToParser(_encoding.GetString(a.FileData), folder.Name); 
         } 
         m.SetFlag(ImapFlags.SEEN); 
        } 
       } 
      } 
     } 
     catch(Exception e) 
     { 
      _diagnostics.Logger.ErrorFormat("Error in PollMailFolders: {0}", e); 
     } 
    } 
+0

Код должен будет вам помочь. –

+0

Хорошо, опубликует завтра - сейчас не работает. Поскольку нет никакой разницы между рабочим и нерабочим кодом (90% обязательно !!! - не нужно рассказывать мне о орфографических ошибках и т. Д.), Я понял, что проблема должна быть связана с ограничениями активности Gmail Imap. –

+0

чисто умозрительный; но это также может быть чрезмерно усердный брандмауэр. – SimonMayer

ответ

0

Я произвел работу, вокруг которого позволяет мне получить данные вложения. Не решение, которое я имел в виду, хотя оно действительно работает.

Простая проверка расширения имени файла, за которой следует преобразование данных сообщения.

BTW: _encoding = Encoding.GetEncoding (1252);

  if (bodyPart.ContentFilename.EndsWith(".csv")) 
      { 
       return _encoding.GetString(Convert.FromBase64String(bodyPart.ContentStream)); 
      } 
Смежные вопросы