imap_append でデータを追加しているので、同じメールでも追加されて増えていきます。 メッセージ作成に時間がかかるので、WEB 上の実行の場合は、タイムアウトに注意する必要があります。 imap_utf8_to_mutf7 は、日本語で作成されたフォルダに対して必要です。
<?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("{imap.mail.yahoo.co.jp:993/imap/ssl}INBOX", "アカウント", "パスワード"); if ( $con === FALSE ) { print imap_last_error(); xlog(imap_last_error()); exit(); } # *************************** # IMAP 接続( 送信先 ) # *************************** $folder = imap_utf8_to_mutf7("個人用"); $con2 = @imap_open("{さくらユーザ.sakura.ne.jp:993/imap/ssl}INBOX.{$folder}", "ユーザ@さくらユーザ.sakura.ne.jp", "パスワード"); if ( $con2 === FALSE ) { print imap_last_error(); xlog(imap_last_error()); exit(); } # *************************** // 現在のメールボックスに関する情報を得る # *************************** $mbox_info = imap_mailboxmsginfo( $con ); xlog("\n■■■ \$mbox_info 現在のメールボックスに関する情報 -------"); xlog( print_r( $mbox_info ,true )); if( $mbox_info->Nmsgs == 0 ) { xlog( "メールメッセージがありません" ); exit(); } // *************************** // メッセージ件数 // *************************** $max = $mbox_info->Nmsgs; xlog("【メッセージ件数:{$max}】" ); // 一番古いものから 30件 if ( $max > 30 ) { $max = 30; } // *************************** // $max 〜 1 // 最新から表示 // *************************** for( $i = 1; $i <= $max; $i++ ) { $header = imap_fetchheader( $con, $i ); $body = imap_body( $con, $i ); imap_append( $con2, "{さくらユーザ.sakura.ne.jp:993/imap/ssl}INBOX.{$folder}", $header . "\r\n" . $body ); } // *************************** // IMAP 接続解除 // *************************** imap_close($con2); imap_close($con); print json_encode($mbox_info, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE ); // *************************** // ログ出力 // *************************** function xlog($message) { file_put_contents("debug.log", "{$message}\n" , FILE_APPEND ); } ?>
|
【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 のローカル )で、さくらインターネットのメールボックスの情報を取得する
- 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なし)