E’ un problema “relativamente” semplice da risolvere. Esistono più modalità. In questo snippet utilizzerò quella più semplice ma che ha il difetti di poter essere intercettato dal sistema di protezione di Outlook 2010 e successivi. Problema risolvibile anche questo (un fastidioso messaggio di alert) ma mettendo pesantemente mano al sistema di sicurezza, appunto.
Prerequisiti
E’ necessario che nei “riferimenti”di visual basic (strumenti->riferimenti) sia presente la libreria “Microsoft Outlook 12.0 Object Library” (anche precedente o successiva). Se non è presente, selezionatela in modo da renderla attiva nel progetto corrente. Ricordate che se l’applicazione dovrà girare su un diverso computer è possibile, se colà è presente una versione diversa di Office, che la libreria selezionata manchi (ma sarà disponibile una precedente o successiva che dovrete attivare manualmente). In questo caso nei riferimenti troverete, sulla riga della libreria, una bel prefisso “MANCA”. Deselezionatelo e caricate la libreria presente su quel PC.
La routine viene avviata chiamandola con una “Call” e passando i dati necessari all’invio dell’email.
Nello specifico:
docpng è il percorso completo di una qualunque immagine/documento da allegare es: “c:\documenti\miodoc.pdf”
Oggetto è l’oggetto del messaggio. Un testo breve che introduce l’argomento es: “invio documenti richiesti”
destinatario è il destinatario (dunque l’email completa del destinatario) es: “This email address is being protected from spambots. You need JavaScript enabled to view it.”. ATTENZIONE! nel codice ho inserito un “override” che vi consentirà di effettuare i test prima di inviare email “a vanvera”. sostituite a “This email address is being protected from spambots. You need JavaScript enabled to view it.” la vostra email. Quando tutto andrà per il meglio potrete eliminare la riga (o commentarla, per usi futuri)
msg è il messaggio vero e proprio, anche in formato RTF, Nel caso di messaggi lunghi, prevedete un campo MEMO in luogo del campo testo normale, limitato a 255 caratteri.
La chiamata alla routine si effettua (devono essere disponibili TUTTI i parametri):
Call modOutlook_SendMail(docpng, Oggetto, destinatario, msg)
Codice da inserire in un modulo VBA
Sub modOutlook_SendMail(ByVal docpng As String, ByVal Oggetto As String, ByVal destinatario As String, ByVal msg As String)
Dim mess_body As String
Dim appOutLook As Outlook.Application
Dim MailOutLook As Outlook.MailItem
Set appOutLook = CreateObject("Outlook.Application")
Set MailOutLook = appOutLook.CreateItem(olMailItem)
'>>>>>>>>>>>>>OVERRIDE DESTINATARIO Togliere la riga seguente una volta ultimati i test
destinatario = "This email address is being protected from spambots. You need JavaScript enabled to view it.";
Set appOutLook = CreateObject("Outlook.Application")
Set MailOutLook = appOutLook.CreateItem(olMailItem)
With MailOutLook
.BodyFormat = olFormatRichText
.To = destinatario
.Subject = Oggetto
.HTMLBody = msg
' se la variabile docpng è valorizzata, allora allega l'attachment
If Len(docpng) > 4 Then
.Attachments.Add (docpng)
End If
.Send
End With
MsgBox "Email Inviata!"
Exit Sub
email_error:
MsgBox "Si è verificato un errore! :( " & vbCrLf & "Il messaggio di errore è: " & Err.Description
Resume Error_out
Error_out:
End Sub