2012-02-14 81 views
0

我一直在研究IMAP客戶端以從Gmail獲取電子郵件。我的應用程序運行良好,直到大約一個小時前,當附件停止檢索。Gmail IMAP - 附件未出現

連接和消息正在被imapX處理。

連接正常 登錄是好的 獲得文件夾是好的 獲取消息是好的

此時attachments.Count == 0,這是今天下午早些時候工作,所以我不知道我是否已經過測試Google已將我的電腦列入黑名單一段時間?有誰知道這是否是這種情況? - 每5-10分鐘跑一次,或許更多次,所以這可能是一個合理的問題。

我試圖發送一個新的電子郵件,其中包含一個完全新的文件,它仍然沒有看到該附件(但它是(總)看到消息本身)。

任何人都可以照亮這個問題嗎?

編輯:標題包括以下標記{[X-MS-HAS-附加,是]}

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

代碼將需要幫助你。 – 2012-02-14 18:07:56

+0

好的,明天會發布 - 現在不工作。由於沒有工作和不工作的代碼之間沒有區別(90%肯定!!! - 不需要告訴我拼寫錯誤等等等等),我想這個問題一定是與上的Gmail IMAP活動的限制。純粹推測性的 – 2012-02-14 18:21:08

+0

;但它也可能是一個過分熱心的防火牆。 – SimonMayer 2012-02-14 18:59:20

回答

0

我已經產生一個變通,讓我獲取附件數據。不是我想到的解決方案,儘管它確實有效。

簡單的文件擴展名檢查,然後轉換郵件數據。

BTW:_encoding = Encoding.GetEncoding(1252);

  if (bodyPart.ContentFilename.EndsWith(".csv")) 
      { 
       return _encoding.GetString(Convert.FromBase64String(bodyPart.ContentStream)); 
      }