メール受信をトリガーにして稼働させるスクリプトを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開発マンは、なんかキツクなってきますね。というかスキル不足なのだからでしょうけど。
完成までがんばるぞ!
ネガティブフィードバック「言いにくいこと」を相手にきちんと伝える技術 : 難波 猛
・ ・ ・ ・ ・
>>安っ!アマゾンで半額以下になっている食品タイムセール
セール特設ページを見る
↓↓↓無料のニュースレターを配信中です