2015-11-30 282 views
0

我有一個循環,用於創建電子郵件和任務。我需要找到自動發送電子郵件並將該電子郵件附加到創建的任務,保存並關閉。VBA發送Outlook電子郵件並將其附加到任務

下面是創建電子郵件和任務的非常簡化的代碼,並將它們保留在顯示模式下,以便手動發送並附加到任務中。

Dim olApp As Object 
Dim ns As Object 
Dim oltask As Object 
Dim SharedFolder As Object 
Dim MyApp As Object 

Set MyApp = CreateObject("Outlook.Application") 
for i = 0 to 3 
    If IsObject(MyApp) Then 
     Set MyItem = MyApp.CreateItem(0) 'olMailItem 
     With MyItem 
      .SentOnBehalfOfName = "[email protected]" 
      .Bcc = Contact 
      .Subject = "SUBJECT" 
      .ReadReceiptRequested = False 
      .HTMLBody = Email_body 
      .Attachments.Add attachement_pdf 
      .Display 
     End With 
     'MyItem.Send 'to send an email 

     Set ns = MyApp.GetNamespace("MAPI") 
     ns.logon 
     Set Recip = ns.CreateRecipient("Inboxname") 
     Set SharedFolder = ns.GetSharedDefaultFolder(Recip, 13) 
     Set oltask = SharedFolder.Items.Add("IPM.Task") 

     With oltask 
      .Subject = "SUBJECT" 
      .StartDate = Date 
      .DueDate = Date + 7 
      .Status = 1 
      .Importance = 1 
      .ReminderSet = False 
      .body = task_body 
      .Display 
      .Attachments.Add 'HOW TO ADD SENT EMAIL? 
     End With 
     'oltask.Save 'save the task 
    End if 
Next i 

P.S.展望2013

回答

1

不幸的是,這並不像你想的那樣簡單。您必須等到電子郵件發送之後才能將其作爲對象添加到TaskItem.Attachments.Add方法的Source參數中。這意味着您必須先發送電子郵件,然後監控已發送郵件文件夾的Folder.Items.ItemAdd事件。 ItemAdd事件的Item參數將使您可以訪問在交付後剛添加到該文件夾​​的MailItem。

+0

嗨,感謝您的回覆。你可以通過監視folder.items.itemAdd事件給出代碼段代碼嗎?我沒有等待它被髮送的問題(或者甚至可以從發件箱中取出)。我也確切知道它會有什麼主題,所以我也可以使用它。 – Trm

+0

這裏有很多用於各種Outlook自動化任務的示例代碼:https://msdn.microsoft.com/en-us/library/office/ff868025.aspx。使用Namespace.GetDefaultFolder(OlDefaultFolders.olFolderSentMail)獲取已發送郵件文件夾的Folder對象的句柄。然後從Folder對象獲取Items集合並處理Items.ItemAdd事件。 –

相關問題