見出し画像

vbsでメールを送るの今更やってみたが

2023/10/10追記 将来的にはVBSは非推奨になるらしい

昔作ったメールを送るvbs。2021年に記録を残しておこうかとやってみたところ、結論としては何やらうまくいかなかったのでここに記す。


VBSの中身

前使っていたのが以下。VBSは文字コードをSJISで保存することに注意。

set oMsg = CreateObject("CDO.Message")
'送信元メールアドレス
oMsg.From = "メールアドレス"
'送信先メールアドレス
oMsg.To = "メールアドレス"
'メールタイトル
oMsg.Subject = "タイトル"
'本文
oMsg.TextBody = "本文です。" 
'添付ファイル ここでは「C:\log.txt」を指定
oMsg.AddAttachment "C:\log.txt"

'メール送信部分
'ここは固定
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'365を想定。自前メールサーバならアドレス
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.office365.com"
'送信ポート NS365の場合は587(推奨)または25、gmailは465
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
'1がBASIC認証。2がNTLM認証
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
'sslを使うか使わないか
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true
'SMTPAITH認証のためのメールアカウントまたはアドレス
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "メールアドレス"
'SMTPAITH認証のための対応パスワード
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "パスワード"
'タイムアウトするまでの時間
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
'内容更新
oMsg.Configuration.Fields.Update
'送信
oMsg.Send
Set oMsg = Nothing

エラーが出る1

こちらをMS365で送信したところ、以下のエラーが出た。
--------------------------------------------------------------------------------
エラー:転送においてサーバーに接続できませんでした。
コード:8004021
ソース:CDO.Message.1

画像1

エラーが出る2

ポートが587だったので25に変えた。
--------------------------------------------------------------------------------
エラー:メッセージをSMTPサーバーに送信できませんでした。転送エラーコードは0x80040217です。サーバーからの応答は次のとおりです。not available
コード:8004211
ソース:(null)

画像2

変化はあったが・・・。ではパスワードを間違えてみる・・・が。
587でも25でも変化なし。

設定か?

設定要因か?と思い、パーソナルFirewallを無効にするが×

通信できてない??
以下のどちらも通る。

telnet smtp.office365.com 587 
telnet smtp.office365.com 25

今回試した環境がWin10 21H1であるため、以下の問題が発生か?

以下をコマンドプロンプトからgpedit.mscを実行し、インターネット、イントラネットに対して行うが変化なし。

というわけで

ざっと調べたところ、改善は見られなかった。port587と25で挙動が違うのかは不明だが、MSはVBSをやめさせたい方向でいるわけなので、これ以上は頑張らないことにした。

アドバイスを頂いたので以下でさらに考察してみた。

現実的には移行ならPowershellかな。

この記事が気に入ったらサポートをしてみませんか?