Come inviare email da Microsoft Access

Un tipico task amministrativo è il sollecito di una fattura. Vediamo come inviare email da Microsoft Access con poche istruzioni VBA e HTML.

Immaginiamo una semplice maschera con un pulsante per l’invio sollecito:

invio_email

 

Ora analizziamo il codice contenuto nel pulsante di comando Invia sollecito.

Private Sub cmdInviaSollecito_Click()
Dim OutApp As Object    ' late binding
Dim OutMail As Object  ' late binding
Dim strMsg As String ' contiene il testo del messaggio
Dim strDest As String ' contiene l'indirizzo email

Le prime due variabili sono create come Object. Significa che sto usando il Late Binding. In tal modo il mio codice va bene sia per Outlook 2010, 2013 o successivi.

Le variabile strMsg e strDest saranno usate per memorizzare il testo del messaggio e l’indirizzo email di invio.

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0) ' creo una email vuota

Con la prima istruzione creo un oggetto Outlook. Questa operazione corrisponde a quando facciamo clic sul collegamento Outlook per aprire il nostro programma di posta elettronica.

Con la seconda creo l’oggetto Email. Corrisponde a quando facciamo clic su Nuovo messaggio. (0 corrisponde a Nuovo messaggio).

strMsg = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>"
strMsg = strMsg & "<html xmlns='http://www.w3.org/1999/xhtml'>"
strMsg = strMsg & "<body>"
strMsg = strMsg & "<p>Spett. Azienda,"
strMsg = strMsg & "<br /><br />Vi inviamo i dettagli di una fattura insoluta:</p>"
strMsg = strMsg & "<table width='800px' border='1' cellpadding='0'>"
strMsg = strMsg & "<tr>"
strMsg = strMsg & "<td ><p align='center'><strong>Data fattura</strong></p></td>"
strMsg = strMsg & "<td ><p align='center'><strong>Numero fattura</strong></p></td>"
strMsg = strMsg & "<td ><p align='center'><strong>Totale fattura</strong></p></td>"
strMsg = strMsg & "<td ><p align='center'><strong>Data scadenza</strong></p></td>"
strMsg = strMsg & "</tr>"
strMsg = strMsg & "<tr>"
strMsg = strMsg & "<td><p align='center'>" & Format(txtDataFattura, "dd/mmm/yyyy") & "</p></td>"
strMsg = strMsg & "<td><p align='center'>" & txtNumeroFattura & "</p></td>"
strMsg = strMsg & "<td><p align='center'><strong>" & Format(txtTotaleFattura, "Standard") & "</strong></p></td>"
strMsg = strMsg & "<td><p align='center'><font color=red>" & Format(txtDataScadenza, "dd/mm/yyyy") & "</font></p></td>"
strMsg = strMsg & "</tr>"
strMsg = strMsg & "</table>"
strMsg = strMsg & "<br />"
strMsg = strMsg & "<p>Vi preghiamo di verificare.<br />"
strMsg = strMsg & "In attesa di un vostro riscontro porgiamo cordiali saluti. <br /><br />"
strMsg = strMsg & "MyName<br />"
strMsg = strMsg & "<a href='http://www.mysite.come'>www.mysite.com</a><br />"
strMsg = strMsg & "Tel. +00 00000000 Fax +00 0000001</p>"
strMsg = strMsg & "</body>"
strMsg = strMsg & "</html>"

Le istruzioni qui sopra creano l’effettivo testo del messaggio. Il linguaggio utilizzato è HTML. Se lo conoscete, potete creare dei messaggi molto ben formattati.

L’istruzione importante è quella in cui leggo i dati dalla maschera.

Facciamo l’esempio della data fattura:

strMsg = strMsg & "<td><p align='center'>" & Format(txtDataFattura, "dd/mm/yyyy") & "</p></td>"

Ho evidenziato in blu ciò che serve per leggere i dati dalla mia maschera.

txtDataFattura è il nome del controllo Casella di testo che sulla maschera corrisponde appunto alla data fattura. Con la funzione Format posso cambiare il formato della data. Equivale a quando in Excel scelgo Formato Personalizzato. Esempio: se volessi la data con il mese abbreviato potrei usare questa istruzione:

Format(txtDataFattura, "dd mmm yyyy")  ' 1 Nov 2016

Assegno ora l’indirizzo email che ho sulla maschera alla mia variabile:

strDest = txtEmail

E infine compilo il mio messaggio Outlook:

With OutMail
 .To = strDest 
 .CC = "" 
 .BCC = "me@myemail.it" 
 .Subject = "scadenza di pagamento" 
 .HTMLBody = strMsg 
 .Display 
End With

.To è il destinatario

.CC è la copia per conoscenza

.BCC è la Blind Carbon Copy, la copia per conoscenza nascosta

.Subject è l’oggetto del messaggio

.HTMLBody imposta il testo del messaggio

.Display visualizza il messaggio in Outlook senza inviarlo, così è ancora possibile effettuare opportune modifiche / controlli.

Anche se non è strettamente necessario, in chiusura posso eliminare le due variabili create all’inizio:

Set OutMail = Nothing
Set OutApp = Nothing
End Sub

E al clic del pulsante ottengo il mio messaggio:

emailaccess