
詳しく原因まで追究できていないんだけど、誰かの役に立てばと思いアップ。
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もサポートしてるメールサーバじゃないとダメだけど、一応解決ということで。

