コマンドラインからのメール送信スクリプト | 人生中盤から色々学ぶ(ブ)ログ

人生中盤から色々学ぶ(ブ)ログ

IT、経済、英語、その他今必要だなと思う事を学びつつ、自分用の記録ついでにブログ化。
あん時やっときゃ良かった、をそろそろ終わりにしたい!

まずはサンプルスクリプト。

Windows10のパソコンとWindows2012サーバでは実行可能確認済です。

お好みのファイル名に拡張子は「.vbs」で。

Set oMsg = CreateObject("CDO.Message")
Set objNetwork = CreateObject("WScript.Network")


strHostName = objNetwork.ComputerName

oMsg.From = "hi-system@foo.bar.com"
oMsg.To = "hogehoge@cyberagent.co.jp"
oMsg.Subject = "メール疎通テスト(送信元:" & strHostName  & ")"
oMsg.TextBody = Now & vbCrLf & strHostName & "からのメール送信の疎通テストです"

oMsg.Configuration.Fields.Item _
  ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
 

oMsg.Configuration.Fields.Item _
  ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
    "mail.foo.bar.com"
 

oMsg.Configuration.Fields.Item _
  ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
 

oMsg.Configuration.Fields.Update

oMsg.Send

 

CDO(Microsoft Collaboration Data Objects)という古い仕組みを使った簡易スクリプトです。

今やMicrosoftは非推奨ながら、テキストスクリプトで簡単に送信出来る利便性は捨てがたいですね。

 

最初の2行はおまじない。From~TextBodyがメールの文面に関わる箇所。

"http://schemas.microsoft.com/cdo/configuration/smtpserver"が送信メールサーバの指定です。

こういうのが必要だ、って探す方は、雰囲気でだいたい分かるのでしょうけど。

 

 

私もどこからで見つけた情報をもとにこれを作ったのですが、もう元サイトが見つけられませんでした。

改めて仕様を確認しようと思ってググっていたら、詳細に解説してくださっているサイト様を発見しました。

VBAでメール送信する(CDO:Microsoft Collaboration Data Objects)

VBA技術解説

https://excel-ubara.com/excelvba4/EXCEL233.html#SH9HlQx.twitter_responsive

 

結構色んなパラメータが設定出来るようですね。

前述のスクリプトはメール環境セットアップ後の確認でしか使った事なかったんですが、

ローカルなメールサーバだけでなく外部メールサーバ使っての送信も出来そう。

 

今さらあまり拘って調べるような事でも無いかも知れませんが、

インフラ構築にはいろんな制約がつきものなので、

標準機能の範囲で出来る事は押さえておきたいですね。