Как отправить электронное письмо в 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. Затем нажмите «Добавить», а затем «ОК». При желании вы можете назначить значок для своего макроса.
  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("Лист1")
# Получить количество заполненных строк в файле 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 = " Статус вашей учетной записи в домене woshib.com "
$strBody = "Дорогой" + $FullUsername
$strBody = $strBody + " `r`n Ваша учетная запись в домене woshib.com находится в " + $Status
$strBody = $strBody + "`r`n Дата и время последней смены пароля: " +  $pwdchange
$strfile="C:\ps\quot; + $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 и прикрепляет этот файл. Затем отправляет электронное письмо.


Как создать шаблон электронной почты в Microsoft Outlook.com 365?

Как создать шаблон электронной почты в Microsoft Outlook.com 365?

Как создать шаблон электронной почты в Microsoft Outlook.com 365?

Как изменить цвет маркеров в Word?

Как изменить цвет маркеров в Word?

В этом посте вы узнаете, как изменить цвет и размер маркированных списков / точек в Excel, PowerPoint и Word 365 / 2016 / 2019.

Остановите и удалите повторяющиеся сообщения электронной почты в Outlook 2016 и 2019

Остановите и удалите повторяющиеся сообщения электронной почты в Outlook 2016 и 2019

Ваш почтовый ящик загроможден повторяющимися записями электронной почты? Узнайте, как остановить получение и удалить повторяющиеся сообщения в почтовых ящиках Outlook 365 / 2019 / 2016 как в MAC, так и в Windows.

Как добавить GIF-изображения в тело или подпись электронной почты Outlook 2016/2019?

Как добавить GIF-изображения в тело или подпись электронной почты Outlook 2016/2019?

Узнайте, как добавить / встроить и отправить изображение GIF в исходящую электронную почту Outlook 2016 и 2019.

Как обновить почту в почтовом ящике Outlook, если она не обновляется автоматически?

Как обновить почту в почтовом ящике Outlook, если она не обновляется автоматически?

Входящие Outlook не обновляются автоматически? Узнайте, как автоматически обновлять папку «Входящие» Outlook 365/2019/2016/2013 автоматически.

Как отправить электронное письмо в Outlook с помощью VBA?

Как отправить электронное письмо в Outlook с помощью VBA?

Научитесь писать макросы Outlook для автоматизации отправки электронной почты.

Почему Outlook находится в автономном режиме или отключен и как повторно подключиться?

Почему Outlook находится в автономном режиме или отключен и как повторно подключиться?

Узнайте, как диагностировать и устранять различные проблемы с отключением клиента Microsoft Outlook в Windows 10.

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

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

Узнайте, как разрабатывать и создавать настраиваемые пользовательские формы 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.