Как да изпратите имейл в Outlook с VBA?

Актуализирано: август 2021 г.; Приложимо за Microsoft Outlook 365 / 2019 / 2016

Ето бележка, която получихме от читател.

Благодаря за вашата много полезна помощ за кодиране на Outlook. Чудя се дали можете да споделите някакъв код, който да помогне за автоматизирането на изпращането на имейл в Outlook? Знам, че има няколко начина за изпращане на повтарящи се съобщения, но специално се интересувам от използването на VBA за тази задача.

Благодаря за въпроса. Автоматичното изпращане на имейли изглежда е сред най-полезните и популярни задачи, които можете да автоматизирате с помощта на VBA. Прочетете за повече подробности и прост скрипт, за да започнете тук.

Писане на VBA за изпращане на имейли на Outlook

В доста прост пример по-долу ще покрием следните стъпки:

  1. Първо, ще използваме обектния модел на VBA Outlook, за да създадем нов имейл елемент.
  2. След това ще продължим и ще зададем важността на съобщението, получателите (разделени с точка и запетая) и стила и съдържанието на основния текст.
  3. След това ще покажем съобщението във вашето приложение на Microsoft Outlook.
  4. И накрая, ние ще продължим и ще го изпратим на получателите.

Ето простият VBA код за автоматично създаване и изпращане на прости имейли. Имайте предвид, че трябва лесно да подобрите този скрипт, за да включите прикачени файлове, задачи и т.н.“, но нека започнем с един много основен скрипт.

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

Пряк път за макрос на Outlook VBA

Може да искате да разгледате свързването на VBA кода, който току-що написахте, с команден бутон в Outlook. Това ще ви позволи лесно да го стартирате от пряк път, поставен в лентата на Outlook.

Ето как да направите това:

  1. Първо, продължете и отворете Microsoft Outlook.
  2. Натиснете Файл и след това изберете Опции
  3. Сега продължете и изберете Персонализиране на лентата.
  4. В секцията Персонализиране на лентата ще забележите списъчното поле Избор на команди от.
  5. Изберете Макроси
  6. След това изберете вашия новосъздадения VBA код, в нашия случай името трябва да бъде SendMail.
  7. След това натиснете Добавяне и след това OK. По желание може да искате да зададете икона на вашия макрос.
  8. Вашият макрос ще бъде наличен в лентата с инструменти за бърз достъп в горната лява част на приложението на Outlook.

Възможни проблеми с настройките на макросите на VBA

Може да се наложи настройките на вашите макроси в Outlook да бъдат настроени, за да стартирате макроси. Ако е така, ето как да направите това.

Бонус: Изпратете имейл от Outlook с помощта на PowerShell

В PowerShell можете да използвате кратката команда Send-MailMessage за изпращане на имейл. Той обаче изисква да се удостоверите на пощенския сървър и не поддържа съвременни методи за удостоверяване, като OAuth и Microsoft Modern Authentication. Така че е много по-лесно да изпратите имейл, ако имате профил в Outlook, конфигуриран на вашия компютър.

Ето пример за скрипт PowerShell, който чете данни от Excel файл и използва профил в Outlook, за да изпрати имейл до всеки потребител:

# отваряне на Excel файл
$ExcelObj = New-Object -comobject Excel.Application
$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\user_list.xlsx")
$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("Sheet1")
# Вземете броя на попълнените редове в xlsx файл
$rowcount=$ExcelWorkSheet.UsedRange.Rows.Count
# Преминете през всички редове в колона 1, като започнете от втория ред (тези клетки съдържат потребителските имена и имейлите).
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
# Генериране на основен текст на съобщение
$strSubj = " Състояние на вашия акаунт в домейна woshub.com "
$strBody = "Уважаеми " + $FullUsername
$strBody = $strBody + " `r`n Вашият акаунт в домейна woshub.com е в " + $Status
$strBody = $strBody + "`r`n Датата и часът на последната промяна на паролата е: " +  $pwdchange
$strfile="C:\ps\" + $useremail + ".txt"
# Предполагаме, че Outlook работи, ако не е, ще трябва да го стартирате с командата $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
# Прикачете файл (ако е необходимо)
$email.Attachments.add($strfile)
#изпратете имейл съобщението
$email.Send()
}
$ExcelWorkBook.close($true)

скрипт на powershell за изпращане на имейл от конфигуриран профил в Outlook

Този скрипт на PowerShell предполага, че Outlook работи на вашия компютър. Скриптът генерира темата и тялото на имейла за всеки SMTP адрес на получател в XLSX файла и прикачва файла. След това изпраща имейла.


Как да напиша полезни макроси в съобщенията на Outlook 2016 и 2019?

Как да напиша полезни макроси в съобщенията на Outlook 2016 и 2019?

Нов сте в VBA макроси за автоматизация на Outlook? Научете как да вмъкнете VBA код в Outlook 365 / 2016 / 2019.

Как да дублирате срещи и събития във вашия календар на Outlook 2019 / 365 / 2016?

Как да дублирате срещи и събития във вашия календар на Outlook 2019 / 365 / 2016?

Научете как лесно да дублирате събития, срещи и срещи в календара на Outlook в Office 365, 2016 и 2019.

Формуляри на Outlook: Как да създадете попълваеми формуляри в Microsoft Office 2016 / 2019?

Формуляри на Outlook: Как да създадете попълваеми формуляри в Microsoft Office 2016 / 2019?

Научете как можете да проектирате и създавате потребителски формуляри на Outlook.

Как да обновя входящата си поща в Outlook, когато не се актуализира автоматично?

Как да обновя входящата си поща в Outlook, когато не се актуализира автоматично?

Входящата кутия на Outlook не се актуализира автоматично? Научете как можете автоматично да опреснявате входящата си кутия в Outlook 365 / 2019 / 2016 / 2013 автоматично.

Как да добавя gif изображения в Outlook 2016 / 2019 имейл тяло или подпис?

Как да добавя gif изображения в Outlook 2016 / 2019 имейл тяло или подпис?

Научете как да добавяте/вграждате и изпращате gif изображение към вашия изходящ имейл за Outlook 2016 и 2019.

Защо Outlook е офлайн или прекъснат и как да се свържете отново?

Защо Outlook е офлайн или прекъснат и как да се свържете отново?

Научете как да диагностицирате и отстранявате различни проблеми при прекъсване на връзката на клиента на Microsoft Outlook в Windows 10.

Как да изпратите имейл в Outlook с VBA?

Как да изпратите имейл в Outlook с VBA?

Научете се да пишете макроси на Outlook, за да автоматизирате изпращането на имейли.

Спиране на изскачащите известия от календара на Outlook 365 / 2019 / 2016 за срещи и срещи

Спиране на изскачащите известия от календара на Outlook 365 / 2019 / 2016 за срещи и срещи

Научете как да деактивирате напомнянията и известията от календарите на Outlook 2016 / 2019, както на Windows, така и на MAC.

Как да накарам Microsoft Outlook да работи по-бързо (версии 2019 / 365/ 2016)?

Как да накарам Microsoft Outlook да работи по-бързо (версии 2019 / 365/ 2016)?

Научете как да подобрите производителността на Outlook.

Как да промените паролата си за Hotmail в Windows, телефон с Android, iPhone или iPad?

Как да промените паролата си за Hotmail в Windows, телефон с Android, iPhone или iPad?

В тази публикация ще ви помогнем да промените паролата на акаунта си в Outlook.com и да синхронизирате вашия Windows на всичките си устройства.