2013-08-16 35 views
0

我想從不是由我發送的特定文件夾下載附件。使用Outlook從特定文件夾獲取最新的未讀郵件

我需要從當前日期下載該文件夾中的最新未讀郵件。

那麼我該怎麼做?

這裏是我的代碼:

Dim app As Microsoft.Office.Interop.Outlook.Application = Nothing 
    Dim ns As Microsoft.Office.Interop.Outlook._NameSpace = Nothing 
    Dim inboxFolder As Microsoft.Office.Interop.Outlook.MAPIFolder = Nothing 
    Dim subFolder As Microsoft.Office.Interop.Outlook.MAPIFolder = Nothing 
    Dim destinationDirectory As String = "C:\UnreadMails" 
    If Not Directory.Exists(destinationDirectory) Then 
     Directory.CreateDirectory(destinationDirectory) 
    End If 
    Try 
     app = New Microsoft.Office.Interop.Outlook.Application() 
     ns = app.GetNamespace("MAPI") 
     ns.Logon(Nothing, Nothing, False, False) 

     inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox) 
     subFolder = inboxFolder.Folders("UnreadMails") 'folder.Folders[1]; also works 
     Console.WriteLine("Folder Name: {0}, EntryId: {1}", subFolder.Name, subFolder.EntryID) 
     Console.WriteLine("Num Items: {0}", subFolder.Items.Count.ToString()) 

     For i As Integer = 1 To subFolder.Items.Count 
      Dim item As Microsoft.Office.Interop.Outlook.MailItem = CType(subFolder.Items(i), Microsoft.Office.Interop.Outlook.MailItem) 
      Dim filePath As String = Path.Combine(destinationDirectory, item.Attachments(i).FileName) 
      item.Attachments(i).SaveAsFile(filePath) 
     Next i 
    Catch ex As System.Runtime.InteropServices.COMException 
     Console.WriteLine(ex.ToString()) 
    Finally 
     ns = Nothing 
     app = Nothing 
     inboxFolder = Nothing 
    End Try 

回答

1

我設法得到它做這樣的工作:

Dim app As Microsoft.Office.Interop.Outlook.Application = Nothing 
Dim ns As Microsoft.Office.Interop.Outlook._NameSpace = Nothing 
Dim inboxFolder As Microsoft.Office.Interop.Outlook.MAPIFolder = Nothing 
Dim subFolder As Microsoft.Office.Interop.Outlook.MAPIFolder = Nothing 
Dim destinationDirectory As String = Directory.GetCurrentDirectory & "\Output\" 
    If Not Directory.Exists(destinationDirectory) Then 
       Directory.CreateDirectory(destinationDirectory) 
    End If 
    Try 
     app = New Microsoft.Office.Interop.Outlook.Application() 
     ns = app.GetNamespace("MAPI") 
     ns.Logon(Nothing, Nothing, False, False) 
     inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox) 
     subFolder = inboxFolder.Folders("checklist") 'folder.Folders[1]; also works 
       Try 
        For Each collectionItem As Object In subFolder.Items 
         Dim newEmail As Outlook.MailItem = TryCast(collectionItem, Outlook.MailItem) 
         If newEmail Is Nothing Then 
          Continue For 
         End If 

         If newEmail.Attachments.Count > 0 Then 
          For i As Integer = 1 To newEmail.Attachments.Count 
           Dim filePath As String = Path.Combine(destinationDirectory, newEmail.Attachments(i).FileName) 
           newEmail.Attachments(i).SaveAsFile(filePath) 
          Next i 
         End If 
        Next collectionItem 
       Catch ex As Exception 
        Console.WriteLine(ex) 
       End Try 
      Catch ex As System.Runtime.InteropServices.COMException 
       Console.WriteLine(ex.ToString()) 
      Finally 
       ns = Nothing 
       app = Nothing 
       inboxFolder = Nothing 
     End Try 
End Sub 
相關問題