VBA / 使用Excel VBA批次寄信 3

之前在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格式

也可以增加附件檔案

要批量寄信就可以連結工作表以迴圈方式執行