CDOを使用したメール送信(VB6) への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2018/7/8 23:18:31
ひとまず、エラー: -2147220977 (0x8004020F) の文字化けしたメッセージの中に、
SMTP 応答コード「553 5.7.1」のエラーメッセージが表示されていますね。
553 5.7.1 <送信先のメールアドレス>: Sender address rejected: not logged in
どのように設定すれば良いのかは、お使いのメールサーバーによって異なるので
一概には言えませんが、メールサーバー管理者の方で、「正しい Outlook 設定方法」を
公開していたりはしないでしょうか。たとえばこういったページです。
https://help.gmocloud.com/app/answers/detail/a_id/2330/~/%E3%80%8C553-5.7.1%E3%80%8D%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%A6%E3%80%81%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%AE%E9%80%81%E4%BF%A1%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82
> .Item(cdoSMTPAuthenticate) = cdoAnonymous 'cdoBasic 'cdoNTLM どれを使えば?
cdoBasic かな…。
もし SSL を使用する場合は、cdoSMTPUseSsl を True にしてみてください。
> .Item(cdoSMTPAuthenticate) = 0
なぜ最後にマジックナンバーで再設定しているのでしょうか?
cdoAnonymous:0:認証無し。
cdoBasic:1:平文による基本認証。cdoSendUserName / cdoSendPassword を指定。
cdoNTLM:2:NTLMによるチャレンジ/レスポンス認証。cdoSendUserName / cdoSendPassword を指定。
SMTP 応答コード「553 5.7.1」のエラーメッセージが表示されていますね。
553 5.7.1 <送信先のメールアドレス>: Sender address rejected: not logged in
どのように設定すれば良いのかは、お使いのメールサーバーによって異なるので
一概には言えませんが、メールサーバー管理者の方で、「正しい Outlook 設定方法」を
公開していたりはしないでしょうか。たとえばこういったページです。
https://help.gmocloud.com/app/answers/detail/a_id/2330/~/%E3%80%8C553-5.7.1%E3%80%8D%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%A6%E3%80%81%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%AE%E9%80%81%E4%BF%A1%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82
> .Item(cdoSMTPAuthenticate) = cdoAnonymous 'cdoBasic 'cdoNTLM どれを使えば?
cdoBasic かな…。
もし SSL を使用する場合は、cdoSMTPUseSsl を True にしてみてください。
> .Item(cdoSMTPAuthenticate) = 0
なぜ最後にマジックナンバーで再設定しているのでしょうか?
cdoAnonymous:0:認証無し。
cdoBasic:1:平文による基本認証。cdoSendUserName / cdoSendPassword を指定。
cdoNTLM:2:NTLMによるチャレンジ/レスポンス認証。cdoSendUserName / cdoSendPassword を指定。
投稿者 eigyou  (社会人)
投稿日時
2018/7/8 16:44:42
cobobo様
あんまり詳しくないので、回答ではないですが
CDO.Message は SMTP over SSL (ポート465) の SMTP 認証方式を使います。TLS/STARTTLS (ポート587) の SMTP 認証方式には対応していないため、この場合は以下のエラーになります。
エラーメッセージ: -2147220973 転送においてサーバーに接続できませんでした。
だそうです
メールサーバ側が対応しているなら ポート465SMTP over SSL 試してみては如何でしょうか?
あんまり詳しくないので、回答ではないですが
CDO.Message は SMTP over SSL (ポート465) の SMTP 認証方式を使います。TLS/STARTTLS (ポート587) の SMTP 認証方式には対応していないため、この場合は以下のエラーになります。
エラーメッセージ: -2147220973 転送においてサーバーに接続できませんでした。
だそうです
メールサーバ側が対応しているなら ポート465SMTP over SSL 試してみては如何でしょうか?
投稿者 cobobo  (社会人)
投稿日時
2018/7/6 15:09:41
VB6からメール送信を行いたいのですが認証で弾かれているようで下記のエラーが出ます。
どこを調べれば良いのでしょうか?
エラー: -2147220977
?T?[?o?[?E?a?A?A 1 ?A?U???I?!?”?I?o?M?O?A?h???X?a?‘”U?3?e?U?μ???B?T?[?o?[?c?c?I‰?“??I???I?A?¨?e?A?・?B553 5.7.1 <アドレス>: Sender address rejected: not logged in
コードに書いた認証情報やポート番号などをコピペでOutlookのアカウント情報に入力した場合
何の問題もなく使えるので、情報自体は正しいです。
コードは以下の通りです。
どこを調べれば良いのでしょうか?
エラー: -2147220977
?T?[?o?[?E?a?A?A 1 ?A?U???I?!?”?I?o?M?O?A?h???X?a?‘”U?3?e?U?μ???B?T?[?o?[?c?c?I‰?“??I???I?A?¨?e?A?・?B553 5.7.1 <アドレス>: Sender address rejected: not logged in
コードに書いた認証情報やポート番号などをコピペでOutlookのアカウント情報に入力した場合
何の問題もなく使えるので、情報自体は正しいです。
コードは以下の通りです。
Dim objEmail As New CDO.Message
Dim strTextBody As String
strTextBody = "テスト"
With objEmail
.To = 宛先
.From = 送信元
.Subject = "テストメール"
.TextBody = strTextBody
.AddAttachment (ファイルパス)
'SMTP設定
With .Configuration.Fields
'サーバー、ポート設定
.Item(cdoSendUsingMethod) = cdoSendUsingPort
.Item(cdoSMTPServer) = SMTPサーバIPアドレス
.Item(cdoSMTPServerPort) = 587 ' ポート№
'認証情報
.Item(cdoSMTPAuthenticate) = cdoAnonymous 'cdoBasic 'cdoNTLM どれを使えば?
.Item(cdoSendUserName) =ユーザー名
.Item(cdoSendPassword) =パスワード
.Item(cdoSMTPConnectionTimeout) = 60
.Item(cdoSMTPAuthenticate) = 0
.Update
End With
.Send
End With
.Item(cdoSMTPAuthenticate) = 0が最後についていたのはコード整理をした時に残ってしまったゴミですね。
cdoSMTPUseSsl をTrueにしたところ出てくるエラーが下記の通りになりました。
エラー: -2147220973
“]‘??E?¨?¢?A?T?[?o?[?E?U‘±?A?≪?U?1?n?A?μ???B
文字化けしてますが番号から見てサーバーの認証方式関係の問題に絞れました。