※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

カゴヤで添付された画像を保存するサンプル


{fowardファイルとかは別途用意しておくこと
}

#!/usr/local/bin/php -q
<?php
//これはデフォでカゴヤにはいっている
require("Mail.php");
//これはhttp://pear.php.net/package/Mail_mimeDecode/download/からもってくる
require_once("./mimeDecode.php");      // PEAR MimeDecode
//メールソースを標準入力から読み込み
$source = file_get_contents("php://stdin");
if(!$source) {
    exit();    // 読み込み失敗
}
//メール解析
$params['include_bodies'] = true;
$params['decode_bodies'] = true;
$params['decode_headers'] = true;
$decoder = new Mail_mimeDecode($source);
$structure = $decoder->decode($params);
//送信者のメールアドレスを抽出
$mail = $structure->headers['from'];
$mail = addslashes($mail);
$mail = str_replace('"','',$mail);
//署名付きの場合の処理を追加
preg_match("/<.*>/",$mail,$str);
if($str[0]!=""){
	$str=substr($str[0],1,strlen($str[0])-2);
	$mail = $str;
}

// 件名を取得。これがIDとなっているとする
$diary_subject = $structure->headers['subject'];
//半角英数字のみ
if(!mb_ereg('[^0-9a-zA-Z]', $diary_subject)){

	switch(strtolower($structure->ctype_primary)){
		case "text": // シングルパート(テキストのみ)
			$diary_body = $structure->body;
			break;
		case "multipart":  // マルチパート(画像付き)
			$i=1;
			foreach($structure->parts as $part){
				switch(strtolower($part->ctype_primary)){
				case "text": // テキスト
					//ignore
				case "image": // 画像
					//添付内容をファイルに保存
					$tmp=date('U');
					$fp = fopen('/home/●●●/public_html/●●●/hostprof/img'.$i."_".$i.$tmp."picture.jpg","w" );
					$length = strlen( $part->body );
					fwrite( $fp, $part->body, $length );
					fclose( $fp );
					//パーミッションを忘れずにかえる。デフォは600になる模様
					chmod('/home/●●●/public_html/●●●/hostprof/img'.$i."_".$i.$tmp."picture.jpg", 0666);
					continue;
				}

			}
			
			break;
		default:
			$diary_body = "";
}

?>