タスクでメールを送信するプログラムが作りたかったのですが、
今回はシンプルにVBScriptを使ってやる方法を考えました。
色々と試していたのですが、2021年の2月にGoogleが行ったアップデートによって、
他サイトに記載されていた方法だとエラーで送れなかったため備忘録としてまとめます。
結論:Gmail側の設定を行うことでできました!
①2段階認証の設定
②アプリパスワードを設定
準備①:2段階認証の設定
まずはGoogleのセキュリティのページを開きます。
Google Account
「セキュリティ」⇒「Googleへのログイン」⇒「2段階認証プロセス」を開きます。
そこでこのアカウントに対するログインを、2段階認証(携帯番号での認証)の設定をします。
準備②:「アプリパスワード」を設定する
本来のパスワードではなく、専用のパスワードを設定することができます。
こちらを使い、今回のメールスクリプト用のパスワードを設定します。
タイムラインのタイトル
- 1アプリパスワードを開く
- 2アプリ名を入力
目的を記載します。ただの名前なので、その他⇒「メール用」とかで。
- 3パスワードが発行される
ここで発行されたパスワードをメモしておきます。
スクリプト作成
下記のようにスクリプトを作成します。
VBscriptですが、おそらくVBAでも使えると思います。
有名なスクリプトなので、よく使われていますが、
唯一異なるのはパスワードを上で作成したアプリパスワードを使用する点です。
Option Explicit
sendMail()
'
' Send mail function
'
Sub sendMail()
Dim objMail
Set objMail = CreateObject("CDO.Message")
objMail.From = "xxx@gmail.com"
objMail.To = "xxx@xxx.com"
objMail.Subject = "E-MAIL TITLE"
objMail.TextBody = "E-MAIL TEXT"
objMail.TextBodyPart.Charset = "ISO-2022-JP"
Dim strConfigurationField
strConfigurationField ="http://schemas.microsoft.com/cdo/configuration/"
With objMail.Configuration.Fields
.Item(strConfigurationField & "sendusing") = 2
.Item(strConfigurationField & "smtpserver") = "smtp.gmail.com"
.Item(strConfigurationField & "smtpserverport") = 465
.Item(strConfigurationField & "smtpauthenticate") = 1
.Item(strConfigurationField & "sendusername") = "xxx@gmail.com" '①各自のGmailID
.Item(strConfigurationField & "sendpassword") = "(アプリパスワード)" '②で作成したパスワード
.Item(strConfigurationField & "smtpconnectiontimeout") = 60
.Item(strConfigurationField & "smtpusessl") = True
.Update
end With
objMail.Send
Set objMail = Nothing
End Sub
これをメモ帳に貼り付け、拡張子を「.vbs」で保存するとファイルが作成されます。
できたファイルをダブルクリックで開くとメールが送信されます。
アプリパスワードを使用するという点が今回から追加された方法となりますので、
是非活用してみてください。
コメント
できました!
ずっと探してました!
ありがとうございます!!
ネズミさん
コメントありがとうございます。
私も同じことで悩んでいたので無事に解決できてよかったです!