AccessのVBAからメールを送る方法について思案しております。
ネットで調査し、コードを書いて実行しましたが「転送においてサーバーに接続できませんでした」と表示され送信できません。
なにか良いサンプルなどありましたらご享受いただけると助かります。
環境:Windows 10
バージョン:Access 2016
概略:メールを送信するだけの簡単な関数を作成し、それを呼び出しているだけの動作テストプログラムです。コード的なエラーは無いのですが送信結果がエラーとなります。
設定しているメール情報は、メールソフトでは問題なく使用できている情報を設定しています。
Function SendMail() As Boolean
Dim objCDO As New CDO.Message
Dim txtアドレス As String
Dim txtパスワード As String
txtアドレス = "sample@dummy.co.jp"
txtパスワード = "passpasspasspass"
On Error GoTo Err_Exit
'戻り値の初期化
SendMail= False
With objCDO
With .Configuration.Fields
.Item(cdoSMTPServer) = "mail.dummy.co.jp"
.Item(cdoSendUsingMethod) = cdoSendUsingPort
.Item(cdoSMTPServerPort) = 587
.Item(cdoSMTPConnectionTimeout) = 60
.Item(cdoSMTPAuthenticate) = cdoBasic
.Item(cdoSMTPUseSSL) = True
.Item(cdoSendUserName) = txtアドレス
.Item(cdoSendPassword) = txtパスワード
.Item(cdoLanguageCode) = CdoCharset.cdoShift_JIS
.Update
End With
.BodyPart.Charset = "文字コード"
.From = txtアドレス
.To = "jyusinnsaki@dummy.co.jp"
.Subject = "送信テスト件名「テストメール送信」"
.TextBody = "送信テスト本文「テストメール送信」"
.Send
End With
MsgBox "メールを送信しました。", vbOKOnly + vbInformation, "送信完了"
'正常終了
SendMail= True
Set objCDO = Nothing
Exit Function
Err_Exit:
MsgBox Err.Number & ":" & Err.Description, vbOKOnly + vbCritical, "SendMail()"
End Function
なぜか文字コードを記載すると、表記が文字化けしてしまいましたので、別途記載します。
コード中の「文字コード」という部分には「ISO-2022-JP」と記載しています。
ちょっと調べましたがこれと同じでしょうか?
CDOでMicrosoft365メールが使えなくなったので調べてみた #mail - Qiita
https://qiita.com/mindwood/items/c5b4475db6ddbfdb0372
中小企業情シス稼業 : VBAからCDOを使用してメール送信時にサーバ接続エラー
https://www.1josys.com/archives/38212996.html
ご返信ありがとうございます。
原因は教え得頂いたリンクの2番目と同じでした。
>VBAからCDOを使用してメール送信時にサーバ接続エラー
こちら無事解決しました。
こちら解決できました。ありがとうございます。
原因は下記リンク先にある通り「CDO.Message」は「SMTP over SSL (ポート465)」の SMTP認証方式を使う為、「TLS/STARTTLS (ポート587)」のSMTP認証方式には対応していないとのことでした。
https://mofuken.blogspot.com/2014/07/windows-cdomessage.html
ただ現在使用しているメールサーバーが「SMTP over SSL (ポート465)」に対応していない為、ちょっと修正する必要がありそうです。
当面はSSLをFALSにしてポートを25で使うことで回避することにしました。