2015-02-03 7 views
0

Я написал код для дополнения outllok таким образом, что когда когда-либо электронная почта поступает в папку «Входящие», она должна быть загружена, но код курчавки таков, что если он попадет в определенную папку, он также не будет загружен. Может ли кто-нибудь мне поучаствовать в этом?Загрузите электронные письма Outlook из определенных папок

private void ThisApplication_NewMail() 
     { 
      const string destinationDirectory = @"C:\TestFileSave"; 

      if (!Directory.Exists(destinationDirectory)) 
      { 
       Directory.CreateDirectory(destinationDirectory); 
      } 

      MAPIFolder sentMail = Application.ActiveExplorer().Session.GetDefaultFolder(OlDefaultFolders.olFolderSentMail); 

      Items sentMailItems = sentMail.Items; 
      try 
      { 
       foreach (object collectionItem in sentMailItems) 
       { 
        MailItem newEmail = collectionItem as MailItem; 

        if (newEmail == null) continue; 

        if (newEmail.Attachments.Count > 0) 
        { 
         for (int i = 1; i <= newEmail.Attachments.Count; i++) 
         { 
          if (newEmail.Attachments[i].FileName.Contains("Logic")) 
          { 
           string filePath = Path.Combine(destinationDirectory, newEmail.Attachments[i].FileName); 
           newEmail.Attachments[i].SaveAsFile(filePath); 
          } 
         } 
        } 
       } 
      } 
      catch (System.Exception ex) 
      { 
       Console.WriteLine(ex); 
      } 
+0

'когда когда-либо электронная почта приходит в папку« Входящие », она должна загружаться» Это не то, что делает этот код. –

+0

Этот код загружается всякий раз, когда я получаю электронное письмо в outllok – user2639663

+0

Он просматривает отправленную почту и определяет, есть ли вложения и загружает вложения. Мы смотрим на тот же код? –

ответ

0

Вы можете обрабатывать NewMailEx событие, чтобы получить уведомление, когда новая почта приходит. Затем вы можете получить значение только что полученного элемента, используя значение EntryID, переданное обработчику событий NewMailEx. Метод GetItemFromID класса Namespace возвращает элемент Microsoft Outlook, идентифицированный указанным идентификатором записи (если он действителен).

Также вы можете рассмотреть возможность использования события ItemAdd класса Items. Он запускается, когда один или несколько элементов добавляются в указанную коллекцию. Помните, что это событие не запускается, когда сразу добавляется большое количество элементов в папку.

Вы можете прочитать больше о том, что в серии статей:

MarkForDownload свойство элементов Outlook, возвращает OlRemoteStatus постоянная t hat определяет статус элемента после его получения удаленным пользователем. Например, следующий пример выполняет поиск в папке «Входящие» пользователя для элементов, которые еще не были полностью загружены. Если обнаружены какие-либо предметы, которые не были полностью загружены, отображается сообщение, и элемент отмечен для загрузки.

Sub DownloadItems() 
Dim mpfInbox As Outlook.Folder 
Dim obj As Object 
Dim i As Integer 
Set mpfInbox = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox) 
'Loop all items in the Inbox folder 
For i = 1 To mpfInbox.Items.Count 
Set obj = mpfInbox.Items.Item(i) 
'Verify if the state of the item is olHeaderOnly 
If obj.DownloadState = olHeaderOnly Then 
    MsgBox ("This item has not been fully downloaded.") 
'Mark the item to be downloaded. 
    obj.MarkForDownload = olMarkedForDownload 
End If 
Next 
End Sub 

Наконец, вы можете использовать Start методы класса SyncObject, чтобы начать синхронизацию папок пользователя с помощью указанного Send \ Receive группы.

Public Sub Sync() 
Dim nsp As Outlook.NameSpace 
Dim sycs As Outlook.SyncObjects 
Dim syc As Outlook.SyncObject 
Dim i As Integer 
Dim strPrompt As Integer 
Set nsp = Application.GetNamespace("MAPI") 
Set sycs = nsp.SyncObjects 
For i = 1 To sycs.Count 
    Set syc = sycs.Item(i) 
    strPrompt = MsgBox(_ 
    "Do you wish to synchronize " & syc.Name &"?", vbYesNo) 
    If strPrompt = vbYes Then 
    syc.Start 
    End If 
Next 
End Sub 
Смежные вопросы