2024/03/18

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格式
也可以增加附件檔案
要批量寄信就可以連結工作表以迴圈方式執行

0 comments:

張貼留言