vba-cdo-email-smtp-access-excel

Visual Basic per Access / Excel: invio email SMTP tramite CDOSYS

Nel nostro primo articolo del 2015 vedremo come inviare un [o più di uno] messaggio di posta elettronica attraverso poche righe di codice Visual Basic.

Esaminiamo subito il codice:

'Dichiariamo la nostra funzione pubblica
Public Function Invia_Messaggio_Email()
'instanziamo il nostro oggetto CDO
Set cdomsg = CreateObject("CDO.message")
With cdomsg.Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'metodo di autenticazione NTLM; nel caso in cui il server per l'invio delle email è installato sul sistema, indicare 1 come parametro
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.server.ext"
'qui indichiamo il server SMTP (ad esempio smtp.google.com)
.Item("http://schemas.microsoft.com/cdo/configuration/smptserverport") = 25
'la porta di comunicazione del nostro server; di default, SMTP con autenticazione utilizza la 25; in alternativa la 587; per connessioni SMTP con certificato SSL dobbiamo indicare la porta 465 (per es. google)
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
'impostiamo se è necessaria l'autenticazione (1 si; 0 no)
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
'indichiamo se utilizzare SSL (1 si; 0 no)
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
'il tempo di timeout/attesa per l'invio
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "accountSMTP@server.ext"
'lo username dell'account SMTP
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "passwordSMTP"
'la password dell'account SMTP
.Update
End With
'in questa sezione impostaimo i parametri del messaggio da inviare
With cdomsg
.To = "destinatario@dominio.ext"
'indirizzo email del destinatario
.From = "mittente@dominio.ext"
'indirizzo email del mittente
.Subject = "the email subject"
'oggetto del messaggio email
.TextBody = "Questo è il testo che verrà inviato come corpo del messaggio email"
.Send
End With
Set cdomsg = Nothing
End Function

Con piccole modifiche è possibile rendere la funzione parametrica, magari passando le credenziali SMTP come parametri della funzione stessa (se parliamo di Access, ovviamente creeremo una tabella ad hoc che li conterrà):

Public Function Invia_Messaggio_Email(MailDestinatario As String, AccountSMTP As String, PasswordSMTP As String, OggettoMessaggio As String, CorpoMessaggio As String)

E’ possibile altresì inviare email in formato HTML, allegare file, aggiungere CCN e/o CCN o impostare la priorità.
Facile, vero? Certo, ma come può tornarci utile in Access o Excel?

Anche qui nulla di troppo complesso: creiamo un pulsante oppure una macro ed invochiamo la funzione appena vista (per l’invio di email multiple, basterà realizzare un ciclo for/while)

Hai bisogno di una consulenza su questo argomento?