Come inviare une-mail in Outlook con VBA?

Aggiornato: agosto 2021; Applicabile a Microsoft Outlook 365/2019/2016

Ecco una nota che abbiamo ricevuto da un lettore.

Grazie per il tuo utilissimo aiuto per la codifica di Outlook. Mi chiedo se puoi condividere del codice per automatizzare l'invio di un'e-mail in Outlook? So che ci sono diversi modi per inviare messaggi ricorrenti, ma sono particolarmente interessato a utilizzare VBA per questo mio compito.

Grazie per la domanda. L'invio automatico di e-mail sembra essere tra le attività più utili e popolari che puoi automatizzare utilizzando VBA. Continua a leggere per maggiori dettagli e un semplice script per iniziare qui.

Scrivere VBA per l'invio di e-mail di Outlook

Nell'esempio piuttosto semplice di seguito, tratteremo i seguenti passaggi:

  1. Prima di tutto, utilizzeremo il modello a oggetti di Outlook VBA per creare un nuovo elemento di posta elettronica.
  2. Quindi andremo avanti e imposteremo l'importanza del messaggio, i destinatari (separati da punti e virgola) e lo stile e il contenuto del corpo del testo.
  3. Quindi visualizzeremo il messaggio nella tua applicazione Microsoft Outlook.
  4. Infine, andremo avanti e lo invieremo ai destinatari.

Ecco il semplice codice VBA per creare e inviare automaticamente semplici e-mail. Nota che devi migliorare facilmente questo script per includere allegati di file, attività, ecc., ma iniziamo con uno script molto semplice.

Sub SendMail()
Dim MyEmail As MailItem
Set MyEmail = Application.CreateItem(olMailItem)

With MyEmail
.To = ""
.Importance = olImportanceHigh
.Subject = ""
.Body = ""
.BodyFormat = olFormatHTML
.Display
End With

'I purposely commented the next line, uncomment it by removing the "'" sign to send your email.
' MyEmail.Send
End Sub

Collegamento alla macro VBA di Outlook

Potresti voler esaminare l'associazione del codice VBA che hai appena scritto con un pulsante di comando in Outlook. Ciò ti consentirà di avviarlo facilmente da un collegamento posizionato nella barra multifunzione di Outlook.

Ecco come farlo:

  1. Per prima cosa, vai avanti e apri Microsoft Outlook.
  2. Premi File quindi seleziona Opzioni
  3. Ora vai avanti e seleziona Personalizza barra multifunzione.
  4. Nella sezione Personalizza barra multifunzione, noterai la casella di riepilogo Scegli comandi da.
  5. Seleziona Macro
  6. Quindi seleziona il codice VBA appena creato, nel nostro caso il nome dovrebbe essere SendMail.
  7. Quindi premi Aggiungi e poi OK. Facoltativamente potresti voler assegnare un'icona alla tua Macro.
  8. La tua macro sarà disponibile nella barra degli strumenti Accesso rapido nella parte in alto a sinistra dell'applicazione Outlook.

Possibili problemi con le impostazioni della macro VBA

Potrebbe essere necessario ottimizzare le impostazioni delle macro di Outlook per eseguire le macro. Se è così, ecco come farlo.

Bonus: invia un'e-mail da Outlook utilizzando PowerShell

In PowerShell, puoi utilizzare il cmdlet Send-MailMessage per inviare messaggi di posta elettronica. Tuttavia, richiede l'autenticazione presso il server di posta e non supporta i metodi di autenticazione moderni, come OAuth e Microsoft Modern Authentication. Quindi è molto più semplice inviare un'e-mail se hai un profilo Outlook configurato sul tuo computer.

Ecco un esempio di uno script PowerShell che legge i dati da un file Excel e utilizza un profilo Outlook per inviare un'e-mail a ogni utente:

# apri il file Excel
$ExcelObj = Nuovo oggetto -comoggetto Excel.Applicazione
$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\user_list.xlsx")
$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("Foglio1")
# Ottieni il numero di righe riempite in un file xlsx
$rowcount=$ExcelWorkSheet.UsedRange.Rows.Count
# Passa in rassegna tutte le righe nella colonna 1, iniziando dalla seconda riga (queste celle contengono nomi utente ed e-mail).
for($i=2;$i -le $rowcount;$i++){
$useremail = $ExcelWorkSheet.Columns.Item(1).Rows.Item($i).Text
$Nomeutentecompleto =  $ExcelWorkSheet.Columns.Item(2).Rows.Item($i).Text
$Stato =  $ExcelWorkSheet.Columns.Item(4).Righe.Item($i).Testo
$pwdchange = $ExcelWorkSheet.Columns.Item(3).Rows.Item($i).Text
# Genera il testo del corpo del messaggio
$strSubj = " Stato del tuo account sul dominio woshub.com "
$strBody = "Caro " + $Nomeutentecompleto
$strCorpo = $strCorpo + " `r`n Il tuo account nel dominio woshub.com è in " + $Stato
$strBody = $strBody + "`r`n La data e l'ora dell'ultima modifica della password sono: " +  $pwdchange
$strfile="C:\ps\" + $useremail + ".txt"
# Supponiamo che Outlook sia in esecuzione, in caso contrario sarà necessario avviarlo con il comando $outlook = new-object -comobject outlook.application
$outlook = [Runtime.InteropServices.Marshal]::GetActiveObject("Outlook.Application")
$email = $outlook.CreateItem(0)
$email.To = $useremail
$email.Oggetto = $strSubj
$email.Body =  $strBody
# Allega un file (se necessario)
$email.Attachments.add($strfile)
#invia il messaggio di posta elettronica
$email.Invia()
}
$ExcelWorkBook.close($true)

script PowerShell per inviare e-mail dal profilo configurato di Outlook

Questo script di PowerShell presuppone che Outlook sia in esecuzione sul tuo computer. Lo script genera l'oggetto e il corpo dell'e-mail per ciascun indirizzo SMTP del destinatario nel file XLSX e allega il file. Quindi invia l'e-mail.


Come creare un modello di posta elettronica in Microsoft Outlook.com 365?

Come creare un modello di posta elettronica in Microsoft Outlook.com 365?

Come creare un modello di posta elettronica in Microsoft Outlook.com 365?

Come modificare la colorazione dei proiettili in Word?

Come modificare la colorazione dei proiettili in Word?

In questo post imparerai come modificare il colore e la dimensione degli elenchi puntati/punti in Excel, PowerPoint e Word 365/2016/2019.

Interrompi e rimuovi i messaggi di posta elettronica duplicati in Outlook 2016 e 2019

Interrompi e rimuovi i messaggi di posta elettronica duplicati in Outlook 2016 e 2019

La tua casella di posta è ingombra di voci di posta elettronica duplicate? Scopri come interrompere la ricezione e rimuovere i messaggi ridondanti in una casella di posta di Outlook 365/2019/2016 in MAC e Windows.

Come aggiungere immagini gif nel corpo delle-mail o nella firma di Outlook 2016/2019?

Come aggiungere immagini gif nel corpo delle-mail o nella firma di Outlook 2016/2019?

Scopri come aggiungere/incorporare e inviare un'immagine gif all'e-mail in uscita di Outlook 2016 e 2019.

Come aggiornare la posta in arrivo di Outlook quando non si aggiorna automaticamente?

Come aggiornare la posta in arrivo di Outlook quando non si aggiorna automaticamente?

Posta in arrivo di Outlook non si aggiorna automaticamente? Scopri come aggiornare automaticamente la posta in arrivo di Outlook 365/2019/2016/2013 automaticamente.

Impedisci la visualizzazione delle notifiche del calendario di Outlook 365/2019/2016 per riunioni e appuntamenti

Impedisci la visualizzazione delle notifiche del calendario di Outlook 365/2019/2016 per riunioni e appuntamenti

Scopri come disabilitare i promemoria e le notifiche dai calendari di Outlook 2016/2019, sia su Windows che su MAC.

Come inviare une-mail in Outlook con VBA?

Come inviare une-mail in Outlook con VBA?

Impara a scrivere macro di Outlook per automatizzare l'invio di e-mail.

Perché Outlook è offline o disconnesso e come riconnettersi?

Perché Outlook è offline o disconnesso e come riconnettersi?

Scopri come diagnosticare e risolvere diversi problemi di disconnessione del client Microsoft Outlook in Windows 10.

Moduli di Outlook: come creare moduli compilabili in Microsoft Office 2016/2019?

Moduli di Outlook: come creare moduli compilabili in Microsoft Office 2016/2019?

Scopri come progettare e creare moduli utente personalizzati di Outlook.

Come rendere più veloce lesecuzione di Microsoft Outlook (versioni 2019/365/2016)?

Come rendere più veloce lesecuzione di Microsoft Outlook (versioni 2019/365/2016)?

Scopri come migliorare le prestazioni di Outlook.