excel からbasp21 でメール送信
- (2020-07-01 17:27:49)
「<>」をつけて「<メアド>」の形式にする
ありがたいことに、まだbasp21 にお世話になっている。
今日はexcelの氏名リストのメアドから、basp21によってメールを送信するVBAを書いた、送信すると
「501 could not parse recipient to ○@○.○」
というエラーで失敗する。
VBAのコードの問題でなく、SMTPサーバに叱られている雰囲気。
検索すると、なんと、自分のブログが出てきた。
もう10年も前の話か、オレは10年進歩していない。
この記事は強制的にmailサーバを移行させられた際、仕様が変わってメールの送信トラブルを体験したようだが、覚えていない・・・
「メルアドだけの場合、以前は山括弧不要だったが、
501 could not parse your mail from command というエラーが」
という内容。今回のトラブルとはメッセージが少し違うが似ている。
試しにメアドにカッコを付けたら動いた。
strAdr = "<" & ○@○.○ & ">"
あ、そう?
そういう仕様になっているようだ。
CDOによるメール送信
basp21は64bit Windows で使えない (そんなことはないのだが) ので、Windows に標準搭載させているコンポーネント「CDO」を使うことが、いまは多いらしい。
私は使ったことがないので、どれくらいむずかしいかわからない。
サンプルコードを書いてくれている人がいるので、消える前にコピーさせてもらう。
次回はこれで試してみたい。
サンプルのとおりに書けば、かなり簡単に送信できそうな予感。
あれ、エラー時の処理はどうするのかな...
CDO.Messageによるメール送信
-------------------------------
サンプル1
-------------------------------
Set objMail = CreateObject("CDO.Message")
objMail.From = "username@xxx.yy.zz"
objMail.To = "username@xxx.yy.zz"
objMail.Subject = "メール送信テスト"
objMail.TextBody = "CDO.Messageによるメール送信テスト"
objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mailhost"
objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMail.Configuration.Fields.Update
objMail.Send
Set objMail = Nothing
-------------------------------
サンプル2
-------------------------------
Set objMail = CreateObject("CDO.Message")
objMail.From = "username@gmail.com"
objMail.To = "username@gmail.com"
objMail.Subject = "SMTP認証、SSL通信によるメール送信テスト"
objMail.TextBody = "CDO.Messageを利用したSMTP認証、SSL通信によるメール送信テスト"
strConfigurationField ="http://schemas.microsoft.com/cdo/configuration/"
With objMail.Configuration.Fields
.Item(strConfigurationField & "sendusing") = 2
.Item(strConfigurationField & "smtpserver") = "smtp.googlemail.com"
.Item(strConfigurationField & "smtpserverport") = 465
.Item(strConfigurationField & "smtpusessl") = True
.Item(strConfigurationField & "smtpauthenticate") = 1
.Item(strConfigurationField & "sendusername") = "username@gmail.com"
.Item(strConfigurationField & "sendpassword") = "password"
.Item(strConfigurationField & "smtpconnectiontimeout") = 60
.Update
end With
objMail.Send
Set objMail = Nothing
<< スマホ新調、セットアップとデータの移行< | >PDFファイルに社印 (jpg画像) を埋込み >>