2015-11-30 2 views
0

У меня есть цикл, где я создаю электронную почту и задание. Мне нужно найти автоматическую отправку электронной почты и прикрепить ее к созданной задаче, сохранить и закрыть.VBA Отправить Outlook Email и приложить его к задаче

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

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. Outlook 2013

ответ

1

К сожалению, это не так просто, как хотелось бы. Вам нужно подождать, пока сообщение электронной почты будет отправлено, прежде чем вы сможете добавить его в качестве объекта в исходный параметр метода TaskItem.Attachments.Add. Это означает, что вам нужно будет сначала отправить свои электронные письма, а затем следить за событием Folder.Items.ItemAdd для папки «Отправленные». Параметр Item события ItemAdd предоставит вам доступ к MailItem, который был добавлен в эту папку только после доставки.

+0

Привет, спасибо, что ответ. Можете ли вы дать код фрагмента, что вы имеете в виду, отслеживая событие folder.items.itemAdd? У меня нет проблемы с ожиданием его отправки (или, возможно, даже из outbox). Я также точно знаю, что у него будет, поэтому я тоже могу это использовать. – Trm

+0

Здесь есть много примеров кода для различных задач автоматизации Outlook: https://msdn.microsoft.com/en-us/library/office/ff868025.aspx. Используйте Namespace.GetDefaultFolder (OlDefaultFolders.olFolderSentMail), чтобы получить дескриптор объекта Folder для папки «Отправленные». Затем получите коллекцию Items из объекта Folder и обработайте событие Items.ItemAdd. –

Смежные вопросы