Com enviar un correu electrònic a Outlook amb VBA?

Actualitzat: agost de 2021; Aplicable a Microsoft Outlook 365 / 2019 / 2016

Aquí teniu una nota que vam rebre d'un lector.

Gràcies per la vostra ajuda molt útil per a la codificació d'Outlook. Em pregunto si podeu compartir algun codi per ajudar a automatitzar l'enviament d'un correu electrònic a Outlook? Sé que hi ha diverses maneres d'enviar missatges recurrents, però estic especialment interessat a utilitzar VBA per a aquesta tasca.

Gràcies per la pregunta. L'enviament automàtic de correus electrònics sembla ser una de les tasques més útils i populars que podeu automatitzar amb VBA. Continueu llegint per obtenir més detalls i un script senzill per començar aquí.

Escriptura de VBA per enviar correus electrònics d'Outlook

En l'exemple més aviat senzill següent, cobrirem els passos següents:

  1. En primer lloc, utilitzarem el model d'objectes de VBA Outlook per crear un nou element de correu electrònic.
  2. A continuació, establirem la importància del missatge, els destinataris (separats per punt i coma) i l'estil i el contingut del text del cos.
  3. A continuació, mostrarem el missatge a la vostra aplicació de Microsoft Outlook.
  4. Finalment, seguirem endavant i l'enviarem als destinataris.

Aquí teniu el codi VBA senzill per crear i enviar correus electrònics senzills automàticament. Tingueu en compte que heu de millorar fàcilment aquest script per incloure fitxers adjunts, tasques, etc., però comencem amb un script molt bàsic.

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

Drecera de macro d'Outlook VBA

És possible que vulgueu associar el codi VBA que acabeu d'escriure amb un botó d'ordres a l'Outlook. Això us permetrà iniciar-lo fàcilment des d'una drecera col·locada a la cinta d'Outlook.

A continuació s'explica com fer-ho:

  1. Primer, aneu endavant i obriu Microsoft Outlook.
  2. Premeu Fitxer i seleccioneu Opcions
  3. Ara seguiu endavant i seleccioneu Personalitza la cinta.
  4. A la secció Personalitza la cinta, notareu el quadre de llista Tria les ordres del.
  5. Seleccioneu Macros
  6. A continuació, seleccioneu el vostre codi VBA acabat de crear, en el nostre cas el nom hauria de ser SendMail.
  7. A continuació, premeu Afegeix i després D'acord. Opcionalment, podeu assignar una icona a la vostra macro.
  8. La vostra macro estarà disponible a la barra d'eines d'accés ràpid a la part superior esquerra de l'aplicació d'Outlook.

Possibles problemes amb la configuració de macro VBA

Pot ser que s'hagi d'ajustar la configuració de la macro d'Outlook per executar macros. Si és així, aquí teniu com fer-ho.

Bonificació: envieu un correu electrònic des d'Outlook mitjançant PowerShell

A PowerShell, podeu utilitzar el cmdlet Send-MailMessage per enviar correu electrònic. Tanmateix, requereix que us autentiqueu al servidor de correu i no admet mètodes d'autenticació moderns, com ara OAuth i Autenticació moderna de Microsoft. Per tant, és molt més fàcil enviar un correu electrònic si teniu un perfil d'Outlook configurat a l'ordinador.

Aquí hi ha un exemple d'un script de PowerShell que llegeix dades d'un fitxer Excel i utilitza un perfil d'Outlook per enviar un correu electrònic a cada usuari:

# obre el fitxer Excel
$ExcelObj = Nou-Objecte -comobject Excel.Aplicació
$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\user_list.xlsx")
$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("Full1")
# Obteniu el nombre de files omplertes en un fitxer xlsx
$rowcount=$ExcelWorkSheet.UsedRange.Rows.Count
# Recorre totes les files de la columna 1, començant per la segona fila (aquestes cel·les contenen els noms d'usuari i els correus electrònics).
for($i=2;$i -le $rowcount;$i++)
$useremail = $ExcelWorkSheet.Columns.Item(1).Rows.Item($i).Text
$FullUsername =  $ExcelWorkSheet.Columns.Item(2).Rows.Item($i).Text
$Status =  $ExcelWorkSheet.Columns.Item(4).Rows.Item($i).Text
$pwdchange = $ExcelWorkSheet.Columns.Item(3).Rows.Item($i).Text
# Genera el text del cos del missatge
$strSubj = " Estat del vostre compte al domini woshub.com "
$strBody = "Estimat " + $FullUsername
$strBody = $strBody + " `r`n El vostre compte al domini woshub.com es troba a " + $Status
$strBody = $strBody + "`r`n La data i l'hora de l'últim canvi de contrasenya és: " +  $pwdchange
$strfile="C:\ps\" + $useremail + ".txt"
# Suposem que l'Outlook s'està executant, si no ho és, haureu d'iniciar-lo amb l'ordre $outlook = new-object -comobject outlook.application
$outlook = [Runtime.InteropServices.Marshal]::GetActiveObject("Outlook.Application")
$email = $outlook.CreateItem(0)
$email.To = $useremail
$email.Subject = $strSubj
$email.Body =  $strBody
# Adjunteu un fitxer (si cal)
$email.Attachments.add($strfile)
#enviar el missatge de correu electrònic
$email.Send()
}
$ExcelWorkBook.close($true)

script de powershell per enviar correu electrònic des del perfil configurat d'Outlook

Aquest script de PowerShell suposa que l'Outlook s'està executant al vostre ordinador. L'script genera l'assumpte i el cos del correu electrònic per a cada adreça SMTP del destinatari al fitxer XLSX i adjunta el fitxer. Després envia el correu electrònic.


Com escriure macros útils als missatges dOutlook 2016 i 2019?

Com escriure macros útils als missatges dOutlook 2016 i 2019?

Nou a VBA Macros per a l'automatització d'Outlook? Obteniu informació sobre com inserir codi VBA a Outlook 365 / 2016 / 2019.

Com duplicar reunions i esdeveniments al vostre calendari dOutlook 2019 / 365 / 2016?

Com duplicar reunions i esdeveniments al vostre calendari dOutlook 2019 / 365 / 2016?

Apreneu a duplicar fàcilment els esdeveniments, les reunions i les cites del calendari d'Outlook a Office 365, 2016 i 2019.

Formularis dOutlook: Com crear formularis que es poden omplir a Microsoft Office 2016 / 2019?

Formularis dOutlook: Com crear formularis que es poden omplir a Microsoft Office 2016 / 2019?

Obteniu informació sobre com podeu dissenyar i crear formularis d'usuari personalitzats d'Outlook.

Com actualitzar el meu correu de la safata dentrada dOutlook quan no sactualitza automàticament?

Com actualitzar el meu correu de la safata dentrada dOutlook quan no sactualitza automàticament?

La safata d'entrada d'Outlook no s'actualitza automàticament? Obteniu informació sobre com podeu actualitzar automàticament la vostra safata d'entrada d'Outlook 365 / 2019 / 2016 / 2013 automàticament.

Com afegir imatges gif al cos o signatura del correu electrònic dOutlook 2016 / 2019?

Com afegir imatges gif al cos o signatura del correu electrònic dOutlook 2016 / 2019?

Obteniu informació sobre com afegir/incrustar i enviar una imatge gif al vostre correu electrònic de sortida d'Outlook 2016 i 2019.

Per què Outlook està fora de línia o desconnectat i com tornar-lo a connectar?

Per què Outlook està fora de línia o desconnectat i com tornar-lo a connectar?

Obteniu informació sobre com diagnosticar i resoldre problemes diferents de desconnexió de clients de Microsoft Outlook a Windows 10.

Com enviar un correu electrònic a Outlook amb VBA?

Com enviar un correu electrònic a Outlook amb VBA?

Apreneu a escriure macros d'Outlook per automatitzar l'enviament de correus electrònics.

Atureu les notificacions del calendari dOutlook 365/2019/2016 per a reunions i cites que apareguin

Atureu les notificacions del calendari dOutlook 365/2019/2016 per a reunions i cites que apareguin

Obteniu informació sobre com desactivar els recordatoris i les notificacions dels calendaris d'Outlook 2016/2019, tant a Windows com a MAC.

Com fer que Microsoft Outlook funcioni més ràpid (versions 2019/365/2016)?

Com fer que Microsoft Outlook funcioni més ràpid (versions 2019/365/2016)?

Obteniu informació sobre com millorar el vostre rendiment d'Outlook.

Com modificar la contrasenya de Hotmail a Windows, telèfon Android, iPhone o iPad?

Com modificar la contrasenya de Hotmail a Windows, telèfon Android, iPhone o iPad?

En aquesta publicació us ajudarà a canviar la contrasenya del vostre compte d'Outlook.com i a mantenir sincronitzat el vostre Windows a tots els vostres dispositius.