Làm cách nào để gửi email trong Outlook với VBA?

Cập nhật: Tháng 8 năm 2021; Áp dụng cho Microsoft Outlook 365/2019/2016

Đây là ghi chú mà chúng tôi nhận được từ một độc giả.

Cảm ơn sự trợ giúp viết mã Outlook rất hữu ích của bạn. Tôi đang tự hỏi liệu bạn có thể chia sẻ một số mã để giúp tự động gửi email trong Outlook không? Tôi biết rằng có một số cách để gửi tin nhắn định kỳ nhưng tôi đặc biệt quan tâm đến việc sử dụng VBA cho nhiệm vụ này của mình.

Cảm ơn vì câu hỏi. Tự động gửi email dường như là một trong những tác vụ hữu ích và phổ biến nhất mà bạn có thể tự động hóa bằng VBA. Đọc để biết thêm chi tiết và một kịch bản đơn giản để giúp bạn bắt đầu ở đây.

Viết VBA để gửi email Outlook

Trong ví dụ khá đơn giản dưới đây, chúng tôi sẽ trình bày các bước sau:

  1. Trước hết, chúng tôi sẽ sử dụng mô hình đối tượng VBA Outlook để tạo một mục email mới.
  2. Sau đó, chúng ta sẽ tiếp tục và đặt mức độ quan trọng của thư, người nhận (phân tách bằng dấu chấm phẩy), kiểu và nội dung văn bản nội dung.
  3. Sau đó, chúng tôi sẽ hiển thị thông báo trong ứng dụng Microsoft Outlook của bạn.
  4. Cuối cùng, chúng tôi sẽ tiếp tục và gửi nó cho người nhận.

Đây là mã VBA đơn giản để tự động tạo và gửi các email đơn giản. Lưu ý rằng bạn có thể dễ dàng cải thiện tập lệnh này để bao gồm tệp đính kèm, tác vụ, v.v. ', nhưng hãy bắt đầu với một tập lệnh rất cơ bản.

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

Lối tắt macro VBA trong Outlook

Bạn có thể muốn xem xét việc liên kết mã VBA bạn vừa viết với một nút lệnh trong Outlook. Điều này sẽ cho phép bạn dễ dàng khởi chạy nó từ một phím tắt được đặt trong Outlook Ribbon.

Đây là cách để làm điều đó:

  1. Trước tiên, hãy tiếp tục và mở Microsoft Outlook.
  2. Nhấn vào Tệp rồi chọn Tùy chọn
  3. Bây giờ, hãy tiếp tục và chọn Customize Ribbon.
  4. Trong phần Tùy chỉnh ruy-băng, bạn sẽ nhận thấy hộp Chọn lệnh từ danh sách.
  5. Chọn Macro
  6. Sau đó Chọn mã VBA mới tạo của bạn, trong trường hợp của chúng tôi, tên phải là SendMail.
  7. Sau đó nhấn Thêm và sau đó nhấn OK. Theo tùy chọn, bạn có thể muốn gán một biểu tượng cho Macro của mình.
  8. Macro của bạn sẽ có sẵn trong thanh công cụ Truy nhập Nhanh ở phía trên bên trái của ứng dụng Outlook của bạn.

Các vấn đề có thể xảy ra với cài đặt macro VBA

Cài đặt macro Outlook của bạn có thể cần được điều chỉnh để chạy macro. Nếu vậy, đây là cách để làm điều đó.

Phần thưởng: Gửi email từ Outlook bằng PowerShell

Trong PowerShell, bạn có thể sử dụng Lệnh ghép ngắn Send-MailMessage để gửi e-mail. Tuy nhiên, nó yêu cầu bạn xác thực với máy chủ thư và không hỗ trợ các phương thức xác thực hiện đại, chẳng hạn như OAuth và Xác thực hiện đại của Microsoft. Vì vậy, việc gửi e-mail sẽ dễ dàng hơn nhiều nếu bạn đã định cấu hình cấu hình Outlook trên máy tính của mình.

Dưới đây là ví dụ về tập lệnh PowerShell đọc dữ liệu từ tệp Excel và sử dụng cấu hình Outlook để gửi e-mail tới mỗi người dùng:

# mở tệp Excel
$ExcelObj = Đối tượng mới -comobject Excel.Application
$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\user_list.xlsx")
$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("Sheet1")
# Lấy số hàng đã điền trong tệp xlsx
$rowcount=$ExcelWorkSheet.UsedRange.Rows.Count
# Lặp lại tất cả các hàng trong cột 1, bắt đầu từ hàng thứ hai (các ô này chứa tên người dùng và e-mail).
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
# Tạo nội dung thư
$strSubj = " Trạng thái tài khoản của bạn trên miền woshub.com "
$strBody = "Kính gửi " + $Tên người dùng đầy đủ
$strBody = $strBody + " `r`n Tài khoản của bạn trong miền woshub.com nằm trong " + $Trạng thái
$strBody = $strBody + "`r`n Ngày và giờ thay đổi mật khẩu cuối cùng là : " +  $pwdchange
$strfile="C:\ps\" + $useremail + ".txt"
# Chúng tôi giả định rằng Outlook đang chạy, nếu không, bạn sẽ cần khởi động nó bằng lệnh $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
# Đính kèm tệp (nếu cần)
$email.Attachments.add($strfile)
#gửi tin nhắn email
$email.Send()

$ExcelWorkBook.close($true)

tập lệnh powershell để gửi email từ hồ sơ được cấu hình Outlook

Tập lệnh PowerShell này giả định rằng Outlook đang chạy trên máy tính của bạn. Tập lệnh tạo chủ đề và nội dung của e-mail cho từng địa chỉ SMTP của người nhận trong tệp XLSX và đính kèm tệp. Sau đó gửi e-mail.


Làm cách nào để tạo một mẫu email trong Microsoft Outlook.com 365?

Làm cách nào để tạo một mẫu email trong Microsoft Outlook.com 365?

Làm cách nào để tạo một mẫu email trong Microsoft Outlook.com 365?

Làm cách nào để sửa đổi màu dấu đầu dòng trong Word?

Làm cách nào để sửa đổi màu dấu đầu dòng trong Word?

Trong bài đăng này, bạn sẽ học cách sửa đổi màu và kích thước danh sách / điểm có dấu đầu dòng trong Excel, PowerPoint và Word 365/2016/2019.

Dừng và xóa các thư email trùng lặp trong Outlook 2016 và 2019

Dừng và xóa các thư email trùng lặp trong Outlook 2016 và 2019

Hộp thư của bạn có lộn xộn với các mục nhập email trùng lặp không? Tìm hiểu cách ngừng nhận và xóa thư thừa trong hộp thư Outlook 365/2019/2016 trong cả MAC và Windows.

Làm cách nào để thêm ảnh gif trong nội dung email hoặc chữ ký Outlook 2016/2019?

Làm cách nào để thêm ảnh gif trong nội dung email hoặc chữ ký Outlook 2016/2019?

Tìm hiểu cách thêm / nhúng và gửi ảnh gif vào email gửi đi Outlook 2016 và 2019 của bạn.

Làm cách nào để làm mới thư hộp thư đến Outlook của tôi khi nó không tự động cập nhật?

Làm cách nào để làm mới thư hộp thư đến Outlook của tôi khi nó không tự động cập nhật?

Hộp thư đến Outlook không tự động cập nhật? Tìm hiểu cách bạn có thể tự động làm mới hộp thư đến Outlook 365/2019/2016/2013 của mình một cách tự động.

Làm cách nào để gửi email trong Outlook với VBA?

Làm cách nào để gửi email trong Outlook với VBA?

Tìm hiểu cách viết macro Outlook để tự động gửi email.

Tại sao Outlook ngoại tuyến hoặc bị ngắt kết nối và cách kết nối lại?

Tại sao Outlook ngoại tuyến hoặc bị ngắt kết nối và cách kết nối lại?

Tìm hiểu cách chẩn đoán và khắc phục sự cố ngắt kết nối máy khách Microsoft Outlook khác nhau trong Windows 10.

Biểu mẫu Outlook: Làm cách nào để tạo biểu mẫu có thể điền trong Microsoft Office 2016/2019?

Biểu mẫu Outlook: Làm cách nào để tạo biểu mẫu có thể điền trong Microsoft Office 2016/2019?

Tìm hiểu cách bạn có thể thiết kế và tạo biểu mẫu người dùng tùy chỉnh Outlook.

Ngăn thông báo lịch Outlook 365/2019/2016 cho cuộc họp và cuộc hẹn bật lên

Ngăn thông báo lịch Outlook 365/2019/2016 cho cuộc họp và cuộc hẹn bật lên

Tìm hiểu cách tắt lời nhắc và thông báo từ lịch Outlook 2016/2019, cả trên Windows và MAC.

Làm cách nào để làm cho Microsoft Outlook chạy nhanh hơn (phiên bản 2019/365/2016)?

Làm cách nào để làm cho Microsoft Outlook chạy nhanh hơn (phiên bản 2019/365/2016)?

Tìm hiểu cách cải thiện hiệu suất Outlook của bạn.