はじめに
CDO.Messageを使用して、VBScriptでメール送信を行う方法です。Windows標準機能のみでメールを送信できるので、OS環境に依存せず使用することが出来ます。
※メール送信に使用するSMTPサーバーは別途必要になります。
VBScriptでメールを送信する
- mailsend.vbs
Set oMessage = CreateObject("CDO.Message")
'//差出人 oMessage.From = "username@test.com" '//宛先 複数の場合はセミコロンで区切る
oMessage.To = "username@test.com"
oMessage.CC = "username@test.com"
oMessage.BCC = "username@test.com"
'//添付ファイル
oMessage.AddAttachment = "添付するファイルをフルパスで指定"
'///件名 oMessage.Subject = "テストメールです" '//本文(テキスト形式)
oMessage.TextBody = "テストメールです。"& vbCRLF & "改行は vbCRLFを使用します"
'//メール送信設定
'//1:ローカルSMTPサービスのピックアップ・ディレクトリにメールを配置する(デフォルトの動作)
'//2:SMTPポートに接続して送信する
'//3:OLE DBを利用してローカルのExchangeに接続する oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 '//SMTPサーバー名
oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtpservername"
'//ポート番号
oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
'//設定更新
oMessage.Configuration.Fields.Update
'//メールヘッダーの設定
'//設定は省略可能です。
'//メーラー
oMessage.Fields("urn:schemas:mailheader:X-Mailer") = "vbscript mail"
'//重要度
oMessage.objMail.Fields("urn:schemas:mailheader:Importance") = "High"
oMessage.objMail.Fields("urn:schemas:mailheader:Priority") = 1
oMessage.Fields("urn:schemas:mailheader:X-Priority") = 1
oMessage.Fields("urn:schemas:mailheader:X-MsMail-Priority") = "High"
oMessage.Fields.update
'//メール送信実行 oMessage.Send Set oMessage = Nothing
その他設定
添付ファイル
- 添付ファイルは以下を追加する
'//添付ファイル
oMessage.AddAttachment "C:\Scripts\Output.txt"
HTML形式
- メールをHTML形式で作成する場合は、oMessage.TextBody の部分をoMessage.HTMLBody にしてHTML形式で記載する
- 暗号化通信(SSL)を使用する場合は、メール送信設定に以下を追加する
oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True or Flase
SMTPサーバー認証
- SMTPサーバー認証は、メール送信設定に以下を追加する
oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1(Basic認証) or 2(NTLM認証)
oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "ユーザー名"
oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "パスワード"
oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 180
参考記事