Непонятно, откуда взялся объект Item
.
Прежде всего, свойство Type
для MeetingItem
получателей может быть одной из следующих констант OlMeetingRecipientType
: olOptional
, olOrganizer
, olRequired
или olResource
. Если вы хотите отправить B CC, я бы рекомендовал создать новый почтовый элемент и скопировать его свойства в новый элемент.
В любом случае, метод Resolve
возвращает логическое значение, которое является истинным если объект разрешился; в противном случае - ложь. Например, вот как вам нужно это проверить:
Sub AssignTask()
Dim myItem As Outlook.TaskItem
Dim myDelegate As Outlook.Recipient
Set MyItem = Application.CreateItem(olTaskItem)
MyItem.Assign
Set myDelegate = MyItem.Recipients.Add("Eugene Astafiev")
myDelegate.Resolve
If myDelegate.Resolved Then
myItem.Subject = "Prepare Agenda For Meeting"
myItem.DueDate = Now + 30
myItem.Display
myItem.Send
End If
End Sub
Имейте в виду, что обработчик событий ItemSend
принимает два параметра. Например, следующий код в VB. NET работает как чудо на моей машине:
Imports System.Runtime.InteropServices
' ...
Private Sub OnItemSend(Item As System.Object, ByRef Cancel As Boolean) _
Handles Application.ItemSend
Dim recipient As Outlook.Recipient = Nothing
Dim recipients As Outlook.Recipients = Nothing
Dim mail As Outlook.MailItem = TryCast(Item, Outlook.MailItem)
If Not IsNothing(mail) Then
Dim addToSubject As String = " !IMPORTANT"
Dim addToBody As String = "Sent from my Outlook 2010"
If Not mail.Subject.Contains(addToSubject) Then
mail.Subject += addToSubject
End If
If Not mail.Body.EndsWith(addToBody) Then
mail.Body += addToBody
End If
recipients = mail.Recipients
recipient = recipients.Add("Eugene Astafiev")
recipient.Type = Outlook.OlMailRecipientType.olBCC
recipient.Resolve()
If Not IsNothing(recipient) Then Marshal.ReleaseComObject(recipient)
If Not IsNothing(recipients) Then Marshal.ReleaseComObject(recipients)
End If
End Sub
Это событие запускается сразу после того, как пользователь нажимает кнопку «Отправить» в Outlook (до закрытия окна инспектора) или когда вызывается метод отправки элементов Outlook. Событие ItemSend предоставляет программисту два параметра:
- Объект
Item
- элемент Outlook, который будет отправлен. Он может быть представлен классами AppointmentItem
, MailItem
, MeetingItem
, MobileItem
, SharingItem
, TaskItem
. - Параметр
Cancel
- позволяет отменить отправку в Outlook . Значение по умолчанию неверно. Если вы установите для параметра Cancel значение true в обработчике событий, процесс отправки будет отменен и пользователю будет показано окно инспектора.
Подробнее об этом читайте в How To: Change сообщение электронной почты Outlook перед отправкой с использованием статьи C# или VB. NET.