【PEAR】さくらサーバーで、画像添付メールの画像をプログラムで取り出す。

まず、さくらインターネットサーバーで以下の2点は完了しておいて下さい。
以前僕がブログ内で書いたものです。

  1. 【PEAR】さくらインターネットサーバーでPEARを使う
  2. 【空メール】さくらインターネットで、空メールからPHPプログラムを実行する。

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