VSTO Add-In per Outlook

di il
1 risposte

VSTO Add-In per Outlook

Ciao a tutti,

sto muovendo i primi passi con Visual Studio in quanto avrei necessità di scrivere un Add-In in VBA per Outlook.
Il mio obiettivo primario è eseguire del codice all'arrivo di una mail.
Vorrei scrivere tutto in VB in quanto ho già pronto il codice funzionante che ho scritto per Outlook, ma che per le varie limitazioni imposte da Microsoft su Outlook 2016 non riesco a distribuire in modo semplice ai colleghi.
Di qui la necessità di passare ad un Add-In VSTO.

La cosa all'inizio sembra semplice, ma per qualche mia carenza cognitiva l'evento arrivo mail non viene gestito.

Dal wizard di Visual Studio ho creato un Outlook VSTO Add-in [Visual Basic] e poi ho aggiunto il seguente codice

Public Class ThisAddIn
    Private WithEvents InboxItems As Outlook.Items
    Private Sub ThisAddIn_Startup(sender As Object, e As EventArgs) Handles Me.Startup
        MsgBox("ciao")  ' questo funziona
    End Sub
    Private Sub InboxItems_ItemAdd(Item As Object) Handles InboxItems.ItemAdd
        MsgBox("mail arrivata")  ' questo non viene eseguito
        If TypeName(Item) = "MailItem" Then
            ' qui ci andrà la mia successiva gestione
        End If
    End Sub
End Class
In teoria InboxItems_Item_Add dovrebbe essere eseguita all'arrivo di ogni mail, ma così non è.

Dove sbaglio?

Grazie della vostra pazienza

Luke

1 Risposte

  • Re: VSTO Add-In per Outlook

    Ciao,
    non ho mai utilizzato VSTO pertanto vado a fiuto: l'oggetto
    Outlook.Items
    semplicemente dichiarato così, ad occhio e croce, non ti permette di intercettare l'evento di ricezione di una mail perché non va a mappare la casella Inbox.
    Prova a dare un'occhiata a questo link https://developermessaging.azurewebsites.net/2011/12/06/process-incoming-mail-using-an-outlook-addin/
    anche se è in C# mi sembra abbastanza leggibile da portare in Vb.Net.
    In pratica bisogna:
    1) Mappare l'oggetto Outlook.MAPIFolder della cartella inbox della sessione corrente (che è quella che ti interessa intercettare) invece dell'oggetto generico Outlook.Items;
    2) Aggiungere l'evento ItemAdd alla collection Items dell'oggetto creato al punto precendente.
    Lucius
Devi accedere o registrarti per scrivere nel forum
1 risposte