如何使用 VBA 在 Outlook 中發送電子郵件?

更新:2021 年 8 月;適用於 Microsoft Outlook 365 / 2019 / 2016

這是我們從一位讀者那裡得到的便條。

感謝您提供非常有用的 Outlook 編碼幫助。我想知道您是否可以共享一些代碼來幫助在 Outlook 中自動發送電子郵件?我知道有幾種方法可以發送重複消息,但我對使用 VBA 來完成這項任務特別感興趣。

謝謝你的問題。自動發送電子郵件似乎是您可以使用 VBA 自動執行的最有用和最流行的任務之一。繼續閱讀以了解更多詳細信息和一個簡單的腳本,讓您從這裡開始。

編寫用於發送 Outlook 電子郵件的 VBA

在下面相當簡單的示例中,我們將介紹以下步驟:

  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 宏設置才能運行宏。如果是這樣,這裡是如何做到這一點。

獎勵:使用 PowerShell 從 Outlook 發送電子郵件

在 PowerShell 中,您可以使用 Send-MailMessage cmdlet 傳送電子郵件。不過,它要求您對郵件伺服器進行身份驗證,並且不支援新式身份驗證方法,例如 OAuth 和 Microsoft 現代身份驗證。因此,如果您的電腦上配置了 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 網域中的帳戶位於“” + $狀態
$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 正在您的電腦上執行。該腳本為 XLSX 檔案中的每個收件者 SMTP 位址產生電子郵件的主題和正文,並附加該檔案。然後發送電子郵件。


如何在 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 中停止和刪除重複的電子郵件

您的郵箱是否因重複的電子郵件條目而雜亂無章?了解如何在 MAC 和 Windows 中的 Outlook 365 / 2019 / 2016 郵箱中停止接收和刪除冗餘郵件。

如何在 Outlook 2016 / 2019 電子郵件正文或簽名中添加 gif 圖像?

如何在 Outlook 2016 / 2019 電子郵件正文或簽名中添加 gif 圖像?

了解如何在 Outlook 2016 和 2019 外發電子郵件中添加/嵌入和發送 gif 圖像。

當 Outlook 收件箱郵件未自動更新時,如何刷新它?

當 Outlook 收件箱郵件未自動更新時,如何刷新它?

Outlook收件箱不自動更新?了解如何自動刷新 Outlook 365 / 2019 / 2016 / 2013 收件箱。

阻止 Outlook 365 / 2019 / 2016 的會議和約會日曆通知彈出

阻止 Outlook 365 / 2019 / 2016 的會議和約會日曆通知彈出

了解如何在 Windows 和 MAC 上禁用 Outlook 2016 / 2019 日曆中的提醒和通知。

如何使用 VBA 在 Outlook 中發送電子郵件?

如何使用 VBA 在 Outlook 中發送電子郵件?

學習編寫 Outlook 宏來自動發送電子郵件。

為什麼 Outlook 脫機或斷開連接以及如何重新連接?

為什麼 Outlook 脫機或斷開連接以及如何重新連接?

了解如何診斷和解決 Windows 10 中不同的 Microsoft Outlook 客戶端斷開連接問題。

Outlook 表單:如何在 Microsoft Office 2016 / 2019 中創建可填寫的表單?

Outlook 表單:如何在 Microsoft Office 2016 / 2019 中創建可填寫的表單?

了解如何設計和創建 Outlook 自定義用戶表單。

如何讓 Microsoft Outlook 運行得更快(版本 2019 / 365/ 2016)?

如何讓 Microsoft Outlook 運行得更快(版本 2019 / 365/ 2016)?

了解如何提高 Outlook 性能。