*Pearで添付メールの処理 [#bd2b754d]

RIGHT:更新日&lastmod();  

**クラスの確認 [#n029c42a]

Mail_Mime、Mail_mimeDecodeあたりが必要なようだ

Mail_MimeとMail_mimeDecodeをインストールしてみる


 # pear install --alldeps Mail_Mime
 # pear install --alldeps Mail_MimeDecode

 # pear list
 Installed packages, channel pear.php.net:
 =========================================
 Package          Version State
 Archive_Tar      1.3.7   stable
 Archive_Zip      0.1.1   beta
 Console_Getopt   1.2.3   stable
 HTTP             1.4.1   stable
 HTTP_Download    1.1.3   stable
 HTTP_Header      1.2.0   stable
 MIME_Type        1.2.0   stable
 Mail_Mime        1.8.0   stable
 Mail_mimeDecode  1.5.1   stable
 PEAR             1.9.1   stable
 Structures_Graph 1.0.3   stable
 System_Command   1.0.6   stable
 XML_Util         1.2.1   stable

**添付ファイルの受信 [#q501fa81]

添付ファイルを受信して、指定フォルダに保存し、返信する

 #!/usr/local/bin/php -q
 <?php
 require_once 'Mail/mimeDecode.php';
 // メールデータ取得
 $params['include_bodies'] = true;
 $params['decode_bodies']  = true;
 $params['decode_headers'] = true;
 $params['input'] = file_get_contents("php://stdin");
 $params['crlf'] = "\r\n";
 $structure = Mail_mimeDecode::decode($params);
 
 //送信者のメールアドレス
 $to_mail = $structure->headers['from'];
 $to_mail = addslashes($to_mail);
 $to_mail = str_replace('"','',$to_mail);
 $to_mail = preg_replace('/(^.*<|>$)/', '', $to_mail);
 
 // 件名を取得
 $mail_subject = $structure->headers['subject'];
 
 switch(strtolower($structure->ctype_primary)){
    case "text":                 // シングルパート(テキストのみ 添付なし)
         $mail_body = $structure->body;
         break;
    case "multipart":
         $kk=0 ;
 // $structure->parts[0] => $part, $structure->parts[1] => $part の順に存在する間は$partに入る
 // $structure->parts[0]->body:本文内容
 // $structure->parts[1]->body:1番目の添付ファイルの内容
 // $structure->parts[2]->body:2番目の添付ファイルの内容
 //  ..................
 
         foreach($structure->parts as $part){
             switch(strtolower($part->ctype_primary)){
            // テキスト(添付ファイルの本文部)
            case "text":
                $mail_body = $part->body; // $structure->parts[0]->body:本文内容
            //    $mail_body = mb_convert_encoding($body, "sjis", "jis");
                break;
 
             //添付ファイル
            default:
                 //添付ファイル名取得
                 $filename = $structure->parts[$kk]->d_parameters['filename'];
                 $kk++ ;
                 // 保存
                 $fp = fopen("/home/okada/public_html/pear_test/temp2/".$filename,"w" );
                 $length = strlen( $part->body ); //$structure->parts[1]->body:以降 添付ファイルの内容
                 fwrite( $fp, $part->body, $length );
                 fclose( $fp );
                 $attached_file = $attached_file .$filename."\n" ;
             }
             $kk++ ;
         }
 
         break;
    default:
    $mail_body = "";
    $attached_file = "";
 }
 
 // 受信した内容を返信
 $body = ""
 .$mail_subject."について\n\n"
 ."内容は\n"
 .$mail_body."\n\n"
 ."以下の添付ファイルを保存しました。\n"
 .$attached_file."\n"
 ."---------------------------------------------\n"
 ."test@Okada \n"
 ."送りもとは".$to_mail."だよ\n"
 ."\n" ;
 
 $mailfrom="From:okada@abc-u.net.jp";
 $mail_title = "メール自動返信" ;
 mb_language("Ja") ;
 mb_internal_encoding("EUC-JP") ;
         //      mb_internal_encoding("UTF-8") ;
 $to_mail="okada@abc-u.net.jp";
 $rc=mb_send_mail($to_mail,$mail_title,$body,$mailfrom);
 ?>

***postfix [#pd9c72ca]

/etc/postfix/aliases

 # mail test(attached file)
 r-mail:         "|/home/okada/public_html/pear_test/r-mail.php"

と記入後

# newaliases

を実行

***サーバ上に自分のフォルダにpearを指定する [#taed91b9]

以下を<?phpの後に入れる

 //PEARのパスを設定
 $path = '/home/okada/pear/PEAR/';
 set_include_path(get_include_path() . PATH_SEPARATOR . $path);
 require_once 'Mail/mimeDecode.php'


**参考ページ [#vd5840a0]

-http://www.aiwake.co.jp/modules/bulletin/index.php?page=article&storyid=4
-http://dozo.matrix.jp/pear/index.php?PEAR%2FMail%2FMail_MimeDecode

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS