【PEAR】さくらサーバーで、画像添付メールの画像をプログラムで取り出す。
2011年9月6日 9:25 PM
まず、さくらインターネットサーバーで以下の2点は完了しておいて下さい。
以前僕がブログ内で書いたものです。
2番で用意したPHPファイルに記述します。
1番で行ったPEARのインストール場所で記述しています。
文字エンコードは、UTF-8で書いています。
————–ここから—————–
#!/usr/local/bin/php //←さくらサーバーはこの記述
<?php
//PEARのパスを設定
$path = ‘/home/(ユーザー名)/pear/PEAR/’;
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
require_once ‘/home/(ユーザー名)/pear/PEAR/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”; //Shift_JISで記述する場合は、\を¥で。
if (!$params[‘input’]) {
// 読み込み失敗
exit();
}
$structure = Mail_mimeDecode::decode($params);
//送信者のメールアドレスを抽出
$mail = $structure->headers[‘from’];
$mail = addslashes($mail);
$mail = str_replace(‘”‘,”,$mail);
$mail = preg_replace(‘/(^.*<|>$)/’, ”, $mail);
// 件名を取得
$subject = $structure->headers[‘subject’];
// 本文、添付ファイル(画像)を抽出
switch (strtolower($structure->ctype_primary)) {
case “text”:
// シングルパート(テキストのみ)
$body = $structure->body;
break;
case “multipart”:
// マルチパート(画像付き)
foreach ($structure->parts as $part) {
switch (strtolower($part->ctype_primary)) {
case “text”:
$body = $part->body;
break;
case “image”:
// 画像の拡張子を取得する
$type = strtolower($part->ctype_secondary);
// 添付ファイル保存
$photo = “sample”.$type;
$tmpName = ‘/home/(ユーザー名)/www/dir/’ . $photo; //画像の保存場所です。
//↑必ずサーバーパスで記述します。./dir/などの相対パスでは駄目です。
今回は、サンプルで画像名は、sampleにしています。
if ($fp = fopen($tmpName, “w”)) {
$length = strlen($part->body);
fwrite($fp, $part->body, $length);
fclose($fp);
}
break;
}
}
break;
default:
$body = “”;
}
?>
————–ここまで—————–
保存する「dir」ディレクトリは、権限を777にして下さいね。
エラーや保存できない理由の多くは、ディレクトリの権限です。
/home/(ユーザー名)/pear/PEAR/ さくらはこれがサーバーパスです。
ちなみに、Drive Networkは、/home/(ユーザー番号)/(ドメイン)/(保存ディレクトリ)/pear/PEAR/です。
件名は、$subject
本文は、$bodyで取得できます。
送信者メールアドレスは、$mailで取れます。
取得したメールアドレスや件名は、データーベースに登録するなり、テキストファイルに保存するなり、メールで送りなりして下さい。
カテゴリー:PHP, Tips, さくらインターネット : コメント(1)
コメント
takanix.com|エクスプロード社長ブログ » 【PEAR】さくらサーバーで、画像添付メールの画像をプログラムで取り出す。
2013年7月21日 8:43 AM | gucci 財布 メンズ
コメントフィード
トラックバックURL: https://takanix.com/wp-trackback.php?p=553