之前在VBA / 使用Excel VBA批次寄信是修改 彰化一整天所寫的excel VBA程式
而這個版本是精簡程式,原理是一樣,都是使用 CDO.Message物件
但是省去了設定頁面,呈現核心程式
只要知道STMP的設定資料
各個郵件伺服器應該都可以使用
本文以Gmail為範例
1.取得google應用程式密碼
google為了保護帳戶安全性
之前可以用低安全性設定來使用帳密連線SMTP
不過現在這個設定應該已經無法使用了
必須要設定並開啟兩步驟驗證
然後設定應用程式密碼,取代原本的帳號密碼
這組密碼是隨機產生的16位英文字母
換言之,就是改用隨機密碼取代原始密碼
而這組隨機密碼只能用在一種googgle應用程式
例如:當密碼第一次使用是用在gmail登入,之後就只能用在登入gmail,不能一組密碼用遍所有google功能
設定流程可以參考google文件說明,不知道之後會不會又改安全性設定
2.CDO.Message的參數設定
宣告Mail變數,使用晚期繫結的方式建立CDO.Message
再用Configuration.Fields.Item 設定參數
Dim Mail As Object Set Mail = CreateObject("CDO.Message") With Mail.Configuration.Fields .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "goohle帳號" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "google程式密碼" .Update End With
3.郵件設定
With Mail .Subject = "VBA透過gmail寄mail" .From = "XXX@gmail.com" .To = "YYY@gmail.com" .CC = "ZZZ@gmail.com" .HTMLBody = "<h1>test 測試</h1>" .HTMLBodyPart.Charset = "utf-8" .Send End With
基本上,這樣程式就能夠使用Gmail帳號寄出信件了
其他的可以再依據需求來細部設定的
像是郵件內容,可以是純文字,也可以是Html格式
也可以增加附件檔案
要批量寄信就可以連結工作表以迴圈方式執行