メール受信をトリガーにして稼働させるスクリプトをPHPで組みました。kagoyaの専用サーバープランの情報が少ないため、シェアしますね。
こんにちは、カグア!です。PHPやJavaScriptでコードを組んで、自作ツールをいろいろと作ってます。
以下、kagoyaの専用サーバープランでの環境になります。
>>よくある質問 – KAGOYA Internet Routing サポートサイト – 届いたメールをウェブサーバーのプログラムで処理したい
この記事の目次
メール受信をトリガーにする、とは
最初は、メール転送をさせるときの、本文に修正を加えて、転送できないかなと調べていました。
しかし、調べていきますと、メール受信をトリガーにして、本文を取り出して加工して送信するPHPプログラムを起動させる、という流れがわかりやすいということなので、早速作ってみました。
メール本文を操作することでハマったこと
メールトリガーで発火させること自体は、前述のkagoyaのヘルプに書いてあるとおりです。ハマったのは契約自体のアカウント名を記述であり、メール受信起動させるメールアカウントではない、という点。
2015年8月1日:kagoya専用サーバープランでの流れです。
1.転送用メールアカウントを作る
2.サーバー情報を調べる

3.転送先をサーバー情報のサーバー由来のメールアドレスにする

4.public_htmlフォルダの外に、.forward ファイルに起動コマンドを書いておく
(起動させたいphpプログラムのパスなど)
という流れです。ヘルプには、mailprocも書くとありますが、.forwardだけでも大丈夫です。
.forwardの記述例
.forwardファイルはテキストエディタなどで書くテキストファイルです。通常はメール転送に関することを書きますが、ここに、起動させるプログラムと、起動のためのデータをどう受け渡すか、という記述をしておきます。
"|/usr/local/bin/php -q /home/*****/hogehoge.php" /dev/null
*****はアカウント名を記述してください。これで、hogehoge.phpがメール受信をトリガーにして、起動します。
パイプをつけておきますと、データを受け渡してくれます。
kagoyaではPEARは標準的なものだけ

専用サーバープランでは、コントロールパネルから利用可能なPEARライブラリがわかります。
phpinfo()
などで見てみますと、PEARのインクルードパスもわかります。php.ini に記述できないため、phpソースコードに以下のように書いても大丈夫です。
ini_set('include_path', '.:/usr/local/php5.4/pear');
kagoyaでPEARを使う方法
前述で調べた基本のPEARライブラリでしたら、すぐに使えます。ライブラリまでのパスがとおっていますので、PHPソース内に、以下のように書けばすぐに使えます。
require_once("Mail.php");
ただし、ネット上の記事にあるように、追加ライブラリをコマンドラインから気軽にインストールする、ということはできないため、各自で工夫しないといけません。
メール転送で内容をいじって転送するコード
//とりあえず、要点のみ記述します。
//このままでは稼働しませんので、実装時にカスタムしてくださいね。
//メール内容を取得
$html = file_get_contents('php://stdin');
//ヘッダ情報をデコードして取得
$subject = mb_decode_mimeheader($html);
//必要文字列を抽出。タイトルを取得できます。
preg_match("/(.*)(Subject:)(.*)/is",$html,$body);
$to="xxx@hoge.com";
//preg_matchで抽出したタイトルの配列を指定
$title = $body[3];
//ヘッダを指定
$header_info="From: hoge@hoge.com"."
Content-Type: text/html;charset=ISO-2022-JP-MS
X-Mailer: PHP/";
mb_internal_encoding('UTF-8');
mb_language('japanese');
//メール送信、いちおうエラー処理も。
if(!mb_send_mail($to,$title,$body,$header_info)){
echo "Send Error...";
}
とりあえず、そのままでは動きませんが、ポイントとなる関数がわかるだけでも有用かと思いますので、ご参考になれば幸いです。
まとめ
メールは文字コードの処理など、面倒な手順が多く、テスト環境構築も面倒ですよね。
ただ、完成しますと、メールという身近なツールをUIにできますので、いろいろと使い勝手は良いかと思います。
Macでの情報がほんと多いんですよねえ。Windows開発マンは、なんかキツクなってきますね。というかスキル不足なのだからでしょうけど。
完成までがんばるぞ!
ネガティブフィードバック「言いにくいこと」を相手にきちんと伝える技術 : 難波 猛
・ ・ ・ ・ ・
>>安っ!アマゾンで半額以下になっている食品タイムセール
セール特設ページを見る
↓↓↓無料のニュースレターを配信中です

