На работе мы успешно это сделали с помощью ВСТО.
Вот фрагмент некоторых строк, которые мы запускаем на VISTA с Outlook 2007: (код находится на VB.net).
Обратите внимание, что использование заблокировано безопасностью при выполнении определенных действий с объектом outlook. (для адресации тела и других свойств, обозначенных как угрозы безопасности). Мы используем сторонний компонент (Redemption), чтобы обойти эту безопасность. Если вы не используете какой-либо менеджер безопасности, outlook выдаст небольшое всплывающее сообщение о том, что что-то извне пытается получить к нему доступ, и вы можете предоставить ему доступ через некоторое время.
Импорт интерфейса Outlook.
Imports Outlook = Microsoft.Office.Interop.Outlook
Этот пример, чтобы дать вам некоторое руководство, а не полный рабочий пример.
dim MailItem As Microsoft.Office.Interop.Outlook.MailItem
' Lets initialize outlook object '
MailItem = OutlookSession.Application.CreateItem(Outlook.OlItemType.olMailItem)
MailItem.To = mailto
MailItem.Subject = communication.Subject
MailItem.BodyFormat = Outlook.OlBodyFormat.olFormatHTML
MailItem.HTMLBody = htmlBody
MailItem.Attachments.Add(filename, Outlook.OlAttachmentType.olByValue)
' If True is supplied to Display it will act as modal and is executed sequential. '
SafeMail.Display(True)
OutlookSession в приведенном выше примере исходит из этого свойства:
Public ReadOnly Property OutlookSession() As Outlook.NameSpace
Get
If Not OutlookApplication Is Nothing Then
Return OutlookApplication.GetNamespace ("MAPI")
Else
Return Nothing
End If
End Get
End Property
Как вы можете видеть, для этого используется MAPI внутри.
Удачи с этим.