Як надіслати електронний лист в 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("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 на всіх ваших пристроях.