*

メール受信をトリガーにしてPHPを起動させる方法<kagoya版>

公開日: : サイト制作


LINE facebook twitter URLコピー
B! pocket Evernote 楽天


家電&カメラ タイムセール/バーゲン会場/クーポン配布はこちら。
Amazonでクーポンをもらう

【Amazonファッション】メンズ80%オフ商品を見る!
セール商品を見る

メールトリガー

メール受信をトリガーにして稼働させるスクリプトをPHPで組みました。kagoyaの専用サーバープランの情報が少ないため、シェアしますね。

こんにちは、カグア!です。PHPやJavaScriptでコードを組んで、自作ツールをいろいろと作ってます。

以下、kagoyaの専用サーバープランでの環境になります。

>>よくある質問 – KAGOYA Internet Routing サポートサイト – 届いたメールをウェブサーバーのプログラムで処理したい

メール受信をトリガーにする、とは

最初は、メール転送をさせるときの、本文に修正を加えて、転送できないかなと調べていました。

しかし、調べていきますと、メール受信をトリガーにして、本文を取り出して加工して送信するPHPプログラムを起動させる、という流れがわかりやすいということなので、早速作ってみました。

メール本文を操作することでハマったこと

メールトリガーで発火させること自体は、前述のkagoyaのヘルプに書いてあるとおりです。ハマったのは契約自体のアカウント名を記述であり、メール受信起動させるメールアカウントではない、という点。

2015年8月1日:kagoya専用サーバープランでの流れです。

1.転送用メールアカウントを作る

2.サーバー情報を調べる
kagoyaのサーバー情報を調べる

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

4.public_htmlフォルダの外に、.forward ファイルに起動コマンドを書いておく
(起動させたいphpプログラムのパスなど)

という流れです。ヘルプには、mailprocも書くとありますが、.forwardだけでも大丈夫です。

.forwardの記述例

.forwardファイルはテキストエディタなどで書くテキストファイルです。通常はメール転送に関することを書きますが、ここに、起動させるプログラムと、起動のためのデータをどう受け渡すか、という記述をしておきます。

"|/usr/local/bin/php -q /home/*****/hogehoge.php"
/dev/null

*****はアカウント名を記述してください。これで、hogehoge.phpがメール受信をトリガーにして、起動します。

>>メール到着で自動的にCGIを実行 – 山崎はるかのメモ

パイプをつけておきますと、データを受け渡してくれます。

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"."\nContent-Type: text/html;charset=ISO-2022-JP-MS\nX-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開発マンは、なんかキツクなってきますね。というかスキル不足なのだからでしょうけど。

完成までがんばるぞ!

いきなりはじめるPHP~ワクワク・ドキドキの入門教室~: 谷藤賢一, 河原健人: 本
いきなりはじめるPHP~ワクワク・ドキドキの入門教室~: 谷藤賢一, 河原健人: 本

「PHPは楽しいね!」

関連するほかの記事を見てみよう!
このサイトのトップページへ行く

  • このエントリーをはてなブックマークに追加
  • Pocket

Profile



Yoshihiko Yoshida
メディア運営業界23年目。Googleアナリティクス公式コミュニティ・アンサリスト最高ランク「レジェンド」国内初獲得。「マツコの知らない世界」Googleマップ案内人TV出演。Googleストリートビュー認定フォトグラファー。教育システム情報学会会員。元立教大学非常勤講師。主な著書「Googleアナリティクス基礎講座」(技術評論社)。趣味はデジカメとゲームとパン作り。>>もっと読む

Instagram

◆代表者略歴 ◆受賞歴
◆おもな著書 ◆TV出演歴
◆新聞掲載歴 ◆雑誌/連載歴
 <<お問い合わせはこちら>>

Facebook

このブログをRSS購読しよう!(無料)

follow us in feedly

よろしければ「いいね」して下さい!

 
PAGE TOP ↑