Sylpheed( Windows メールクライアント ) で、INBOX のフォルダの中にさらにフォルダを作成して読み出しています
<?php error_reporting( E_ALL & ~E_NOTICE & ~E_STRICT ); session_cache_limiter('nocache'); session_start(); header( "Access-Control-Allow-Origin: *" ); header( "Content-Type: application/json; charset=utf-8" ); # デバッグログの初期化 file_put_contents("debug.log", "開始\n" ); mb_internal_encoding("UTF-8"); xlog("ログの出力"); # *************************** # IMAP 接続 # *************************** $con = @imap_open("{さくらサーバ:993/imap/ssl}INBOX", "アカウント", "パスワード"); if ( $con === FALSE ) { print imap_last_error(); xlog(imap_last_error()); exit(); } // メールボックスのリストを読み込み、各ボックスに関する詳細な情報を返す $mbox = imap_getmailboxes( $con, "{さくらサーバ}", "*" ); xlog("\n■■■ \$mbox_info 現在のメールボックスに関する情報 -------"); xlog( print_r( $mbox ,true )); if( $mbox == FALSE ) { xlog( "imap_getmailboxes に失敗しました" ); exit(); } # *************************** # デリミタ取得( サーバ依存 ) # *************************** $delimiter = $mbox[0]->delimiter; # *************************** # フォルダ情報の配列 # *************************** foreach ($mbox as $obj) { // サーバー文字列を削除して // 日本語を含むフォルダをデコード $obj->name = imap_mutf7_to_utf8( str_replace( "{さくらサーバ}", "", $obj->name ) ); // . が無い場合は、ルートのメールボックス if ( strstr($obj->name,".") !== FALSE ) { // フォルダパスの分解 $data = explode( $delimiter, $obj->name ); // 先頭はメールボックス $mailbox = $data[ 0 ]; // 先頭より下を再度連結する $name = ""; for( $i = 1; $i < count( $data ); $i++ ) { if ( $i > 1 ) { $name .= "."; } $name .= $data[ $i ]; } // フォルダのメールボックス以下の階層 xlog( $mailbox . " のフォルダ名 : " . $name ); } } // *************************** // IMAP 接続解除 // *************************** imap_close($con); // *************************** // デバッグ用 JSON出力 // *************************** print json_encode($mbox, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE ); // *************************** // ログ出力 // *************************** function xlog($message) { file_put_contents("debug.log", "{$message}\n" , FILE_APPEND ); } ?>
JSON の内容[ { "name": "INBOX.メールアイテム格納用.階層テスト", "attributes": 64, "delimiter": "." }, { "name": "INBOX.メールアイテム格納用", "attributes": 32, "delimiter": "." }, { "name": "INBOX.Drafts", "attributes": 64, "delimiter": "." }, { "name": "INBOX.Trash", "attributes": 64, "delimiter": "." }, { "name": "INBOX.spam", "attributes": 64, "delimiter": "." }, { "name": "INBOX.Sent", "attributes": 64, "delimiter": "." }, { "name": "INBOX.Draft", "attributes": 64, "delimiter": "." }, { "name": "INBOX", "attributes": 40, "delimiter": "." } ]log の内容開始 ログの出力 ■■■ $mbox_info 現在のメールボックスに関する情報 ------- Array ( [0] => stdClass Object ( [name] => {さくらサーバ}INBOX.&MOEw,DDrMKIwpDDGMOBoPH0NdSg-.&lo5cZDDGMLkwyA- [attributes] => 64 [delimiter] => . ) [1] => stdClass Object ( [name] => {さくらサーバ}INBOX.&MOEw,DDrMKIwpDDGMOBoPH0NdSg- [attributes] => 32 [delimiter] => . ) [2] => stdClass Object ( [name] => {さくらサーバ}INBOX.Drafts [attributes] => 64 [delimiter] => . ) [3] => stdClass Object ( [name] => {さくらサーバ}INBOX.Trash [attributes] => 64 [delimiter] => . ) [4] => stdClass Object ( [name] => {さくらサーバ}INBOX.spam [attributes] => 64 [delimiter] => . ) [5] => stdClass Object ( [name] => {さくらサーバ}INBOX.Sent [attributes] => 64 [delimiter] => . ) [6] => stdClass Object ( [name] => {さくらサーバ}INBOX.Draft [attributes] => 64 [delimiter] => . ) [7] => stdClass Object ( [name] => {さくらサーバ}INBOX [attributes] => 40 [delimiter] => . ) ) INBOX のフォルダ名 : メールアイテム格納用.階層テスト INBOX のフォルダ名 : メールアイテム格納用 INBOX のフォルダ名 : Drafts INBOX のフォルダ名 : Trash INBOX のフォルダ名 : spam INBOX のフォルダ名 : Sent INBOX のフォルダ名 : Draft
|
【PHP + 通信の最新記事】
- fake sendmail for windows を使って、PHP でごく普通に( mb_send_mail で )メール送信
- PHP の cURL でファイルアップロード
- PHP : WEB でもコマンドラインでも HTTP でファイルをダウンロードする 『fget.php』
- PHP : cURL : Google Photo API の albums.list メソッドを使用して アルバム一覧データを取得する
- PHP + cURL で Google Photo API の アクセストークンを取得する
- PHP : cURL で FTP + SSL ダウンロード
- PHP の imap 関数で( Windows ローカル )、Yahoo メールのメールをさくらインターネットのメールへコピーする
- PHP : IMAP 関数 でまずメールのヘッダ部分を整理してログに出力する / ※ JSON 出力を追加
- ファイルを一つアップロード : FORM の target を IFRAME にして、PHP に JavaScript を書き出させて元のページにメッセージを表示させる
- Pear の Net_POP3 で、SSL(995) を使って簡単にメール受信
- PHP をコマンドプロンプトから実行して、WEB 上のデータを取得するいくつかの方法
- FormData を使用して $.ajax で送信すると、ファイルのアップロードとメール送信(ファイル添付)を一度に行えます
- ファイルのアップロードからそれを添付してメールを送るテンプレート(スケルトン)
- PHP : mb_send_mail を使用した自家用メール送信 API
- PHP で Windows標準のオブジェクト(CDO.Message)とGMail を使ってメール送信
- PHP : http 経由でファイルのサイズを取得する file_size 関数と ファイルサイズを付加した get_imagesize 関数
- 連想配列のキー部分がプロパティと一致したらセットする( メール送信用クラス )
- PHP : リモートのファイルサイズを取得する
- ローカルの PHP を使ってコマンドプロンプトより簡単にバイナリファイルをアップロードする
- PHP の cURL で ftp サーバーにファイルをアップロードする(SSLなし)