IMAP関数でメールをやりとりしてみる。
金曜日のGoogleMAPと連係する奴で、メールを入力インターフェースにしたいので、このへんを何とかしてみる。
ただ、サーバーのPHPがSafeModeで動いてるわけでその辺の縛りでうまく行かないかもしれないけど気にしない。
とりあえずIMAPサポートか調べてみる。
サーバーにphpinfo()のPHPを放りこんで表示してみる。
imap
IMAP Support enabled
IMAP c-Client Version 2000
SSL Support enabled
Kerberos Support enabled
おk。
気にしてなかったけどexifも使えるらしい。よしよし。
何はなくともリファレンス
CONNECTION, ERRORS & QUOTAS =========================== imap_timeout imap_ping imap_open imap_reopen imap_close imap_check **(fairly useless) imap_alerts imap_errors imap_last_error imap_get_quota imap_get_quotaroot imap_set_quota MESSAGES - READING ================== imap_uid imap_msgno imap_fetchbody imap_fetchheader imap_fetchstructure imap_fetch_overview imap_body imap_rfc822_parse_adrlist imap_rfc822_parse_headers
とりあえず接続してみる。
$uid = imap_open("{www.qyen.org:110/pop3}","****@qyen.org","*****"); if ($uid==false){ echo imap_last_error(); return ; } $headers = imap_headers($uid); var_dump($headers); imap_close($uid);
で、CLIで実行。
$ php imaploader.php PHP Warning: imap_open(): Couldn't open stream {www.qyen.org:110/pop3} in /var/www/html/php/imagemaps/imaploader.php on line 14 Content-type: text/html X-Powered-By: PHP/4.3.11 <br /> <b>Warning</b>: imap_open(): Couldn't open stream {www.qyen.org:110/pop3} in <b>/var/www/html/php/imagemaps/imaploader.php</b> on line <b>14</b><br /> Certificate failure for www.qyen.org: self signed certificate: /C=--/ST=SomeState/L=SomeCity/O=SomeOrganization/OU=SomeOrganizationalUnit/CN=localhost.localdomain/emailAddress=root@localhost.localdomainPHP Notice: (null)(): Certificate failure for www.qyen.org: self signed certificate: /C=--/ST=SomeState/L=SomeCity/O=SomeOrganization/OU=SomeOrganizationalUnit/CN=localhost.localdomain/emailAddress=root@localhost.localdomain (errflg=2) in Unknown on line 0 <br /> <b>Notice</b>: (null)(): Certificate failure for www.qyen.org: self signed certificate: /C=--/ST=SomeState/L=SomeCity/O=SomeOrganization/OU=SomeOrganizationalUnit/CN=localhost.localdomain/emailAddress=root@localhost.localdomain (errflg=2) in <b>Unknown</b> on line <b>0</b><br />
自己認証は無効ってか。
つかTLSは有効にしてないんだが('A`)
と、ぐぐってみたら/notlsを指定しれって事らしい。
ConnectionStringを"{www.qyen.org:143/imap/notls}"にしたらOKだった。
何だこの罠は。
メッセージヘッダを取り出す
リファレンス見た感じimap_fetch_overview()みたい。
まずは適当に書いてみる。Sequence(第2パラ)はよくわからんので空で:-)
$headers = imap_fetch_overview($uid,""); var_dump($headers);
実行。
<b>Warning</b>: Wrong parameter count for imap_fetch_overview() in <b>/var/www/html/php/imagemaps/imaploader.php</b> on line <b>51</b><br />
('A`)
調べて見るとMsgIdの範囲を"startId:lastId"で指定するみたい。
そのIDを引きたいんだが('A`)
とりあえず
$headers = imap_fetch_overview($uid,"1:3");
としたら読めた。
さて。msgIdをどう取り出すか。