Метод вызова при отправке электронной почты из Outlook?

Существует класс VBA с именем MailItemClass, в котором есть событие для отправки сообщения электронной почты в Outlook. Я не могу найти это для VB.NET. Я просмотрел документацию. но я просто не могу найти его в MAPI.

(Могу ли я вызвать VBA из VB.NET?)


person Zolomon    schedule 11.01.2011    source источник


Ответы (2)


Вы делаете надстройку Outlook? Существует событие под названием Application.ItemSend, которое поднимается перед отправкой элемента. Я только что запустил VS2010, создал новый проект типа надстройки Outlook 2007, который содержит только приведенный ниже код, и мой Application_ItemSend сработал, как и ожидалось, когда я нажал «Отправить из Outlook».

Public Class ThisAddIn

    Private Sub ThisAddIn_Startup() Handles Me.Startup

    End Sub

    Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown

    End Sub

    Private Sub Application_ItemSend(ByVal Item As Object, ByRef Cancel As Boolean) Handles Application.ItemSend
        System.Windows.Forms.MessageBox.Show("Hi")
    End Sub
End Class

ИЗМЕНИТЬ

Если вы создаете приложение WinForms, вы используете тот же метод, но «видите» его немного по-другому. Что может немного сбить с толку, так это то, что событие вызывается на уровне приложения, а не из самого почтового элемента.

Public Class Form1
    ''//Holds a reference to our mail application
    Private WithEvents OA As Microsoft.Office.Interop.Outlook.Application

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ''//Either launches Outlook or snaps to the current running one
        OA = New Microsoft.Office.Interop.Outlook.Application()
    End Sub

    Private Sub OA_ItemSend(ByVal Item As Object, ByRef Cancel As Boolean) Handles OA.ItemSend
        MessageBox.Show("Hello")
    End Sub
End Class
person Chris Haas    schedule 11.01.2011
comment
Нет, я не создаю надстройку Outlook, может быть, мне следует? У меня есть проект Windows Forms, в котором мне нужно обновить базу данных после отправки созданного (через MAPI) электронного письма. - person Zolomon; 11.01.2011
comment
Спасибо, попробую! - person Zolomon; 13.01.2011

И VBA, и VB.NET используют «объектную модель Outlook». Странно, что событие отправки опущено. Однако у вас все еще есть эта ссылка событие.

Я не очень разбираюсь в VB, но поскольку MAPI ориентирован на C++, использование его из VB.net звучит не очень удобно, но MailItem будет примерно соответствовать LPMESSAGE. Различные структуры надстроек Outlook имеют довольно хорошие системы уведомлений. Если вам нужно использовать только MAPI, проверьте MAPI события, ... но это не легко.

person Jahmic    schedule 18.02.2011