Pearで添付メールの処理

更新日2010-08-30 (月) 15:39:29

クラスの確認

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

添付ファイルの受信

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

#!/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

/etc/postfix/aliases

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

と記入後

# newaliases

を実行

サーバ上に自分のフォルダにpearを指定する

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

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

参考ページ


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-08-30 (月) 15:39:29 (2881d)