詳しく原因まで追究できていないんだけど、誰かの役に立てばと思いアップ。
PHP 5.2.6 で動作していた imap_open() が、PHP 5.3.2 になると動かなくなった。
#!/usr/bin/php -q #PHP 5.2.6 のサンプルコード <?php $mailserver = "example.com"; $mbox = imap_open("{".$mailserver.":110/pop3/notls}INBOX", "user@".$mailserver, "password", "OP_READONLY"); var_dump($mbox); if ($mbox) { imap_close($mbox); } ?>
PHP 5.2.6では、このコードはエラーなく動く。
PHP 5.3.2では、以下のエラーになる。
PHP Warning: imap_open() expects parameter 4 to be long, string given in ...
文字列(”OP_READONLY”)が整数(OP_READONLY)に変わったようだ。
ここを修正してもエラーになる。
PHP Warning: imap_open(): Couldn't open stream {mail.example.com:110/pop3/notls}INBOX in ... bool(false) PHP Notice: Unknown: Read-only POP3 access not available (errflg=2) in Unknown on line 0
POP3のリードオンリーはダメみたいだ。
しかたがないので、pop3は使わず、imapにしたらうまくいった。
#!/usr/bin/php -q #PHP 5.3.2 のサンプルコード <?php $mailserver = "example.com"; $mbox = imap_open("{".$mailserver.":143/imap/notls}INBOX", "user@".$mailserver, "password", OP_READONLY); var_dump($mbox); if ($mbox) { imap_close($mbox); } ?>
pop3もimapもサポートしてるメールサーバじゃないとダメだけど、一応解決ということで。