このページの2つのバージョン間の差分を表示します。
— |
プログラム言語:php:imap関数:imap_open_で_couldn_t_open_stream_エラーが出る [2020/07/15 18:14] (現在) humolife 作成 |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== 【PHP】imap_open で「Couldn' | ||
+ | メールサーバを自作し、imap_open でメールサーバにある受信メールを取得するプログラムを作成していた際に遭遇したエラーとその対処法について。\\ | ||
+ | ==== 遭遇したエラー ==== | ||
+ | SSL / TLS を使用して POP3 / IMAP でメールを取得しようとしたところエラーが発生。 | ||
+ | === Laravel でのエラー表示 === | ||
+ | > ErrorException | ||
+ | > imap_open(): | ||
+ | === PHP エラーログ上の表示 === | ||
+ | > PHP Fatal error: | ||
+ | > Stack trace: | ||
+ | > #0 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions-> | ||
+ | > #1 {main} | ||
+ | > | ||
+ | |||
+ | === / | ||
+ | > dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, | ||
+ | |||
+ | ==== 現象 ==== | ||
+ | Postfix と Dovecot に SSL/TLS を導入する前は imap_open が成功していました。 | ||
+ | (POP3:110番ポート、IMAP:143番ポート) | ||
+ | < | ||
+ | $account = ' | ||
+ | $password = ' | ||
+ | |||
+ | # POP3 で接続(成功) | ||
+ | $mailbox = ' | ||
+ | $mbox = imap_open($mailbox, | ||
+ | or die(' | ||
+ | imap_close($mbox); | ||
+ | |||
+ | # IMAP で接続(成功) | ||
+ | $mailbox = ' | ||
+ | $mbox = imap_open($mailbox, | ||
+ | or die(' | ||
+ | imap_close($mbox); | ||
+ | </ | ||
+ | ところが、SSL/ | ||
+ | (POP3S:995番ポート、IMAP4S:993番ポート) | ||
+ | < | ||
+ | # POP3S で接続(失敗) | ||
+ | $mailbox = ' | ||
+ | $mbox = imap_open($mailbox, | ||
+ | or die(' | ||
+ | imap_close($mbox); | ||
+ | |||
+ | # IMAP4S で接続(失敗) | ||
+ | $mailbox = ' | ||
+ | $mbox = imap_open($mailbox, | ||
+ | or die(' | ||
+ | imap_close($mbox); | ||
+ | </ | ||
+ | ==== 解決方法 ==== | ||
+ | 「/ | ||
+ | < | ||
+ | # POP3S で接続(成功) | ||
+ | $mailbox = ' | ||
+ | $mbox = imap_open($mailbox, | ||
+ | or die(' | ||
+ | imap_close($mbox); | ||
+ | |||
+ | # IMAP4S で接続(成功) | ||
+ | $mailbox = ' | ||
+ | $mbox = imap_open($mailbox, | ||
+ | or die(' | ||
+ | imap_close($mbox); | ||
+ | </ | ||
+ | デバッグ情報を表示するようにしたり、色々試した結果、最終的には [[https:// | ||
+ | |||
+ | 公式ドキュメントには「/ | ||
+ | |||
+ | ちなみに、Thunderbird などのメールソフトでは正常に送受信に成功しているので、証明書が間違っているということはありません。\\ | ||
+ | なぜだ。。。 |