日記
IMAP関数のインストールとテスト (17:24)Edit

先を越される前に、IMAP周りをプログラムから使う準備をしておこう。というわけで、まずはPHPにIMAP関数をインストール。

の前にc-clientをインストールしなければならないらしい。ftp://ftp.cac.washington.edu/imap/からc-client.tar.Zをダウンロード。ただ、Fedora Core 2では単純にmake slxではインストールできなかった。PHPで、IMAP,POP3,NNTP関数を使うを参考に、SSLDIRとSSLINCLUDEを書き換えてからmakeして必要なファイルをコピー。PHPに--with-imapを追加してコンパイル。

ひとまずIMAPフォルダの一覧を取るところまで動かしておこうと思って、

$mbox = imap_open('{' . $imapserver . ':143}INBOX', $user, $pwd);
$folders = imap_listmailbox($mbox, '{' . $imapserver . ':143}', '*');
foreach ($folders as $folder) {
echo $folder . "\n";
}

なんてシンプルなコードを動かしてみたら、$folderはなにやら変なエンコードがかかっている。IMAP4の概要とモバイルコンピューティングあたりをながめたところ、

IMAP4rev1(RFC2060)ではサーバ上にフォルダを作成する場合はプロトコル上ではUnicodeをRFC2060で規定されているModifed UTF-7を使用してBASE64でエンコードして作成します

ということらしい。よく見たら、PHPがmb関数でサポートする文字エンコーディングにUTF7-IMAPというそのものずばりっぽい代物がいる。で、

  $folder = mb_convert_encoding($folder, 'euc-jp', 'utf7-imap');

とかやってみたら、ちゃんと日本語フォルダ名も取れるようになった。というところまでで今日の調査終了。

Published At2005-07-21 00:00Updated At2005-07-21 00:00