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.

Từ khóa » Gửi Email Outlook Bằng Vba