メールアドレスとスクリプトの連携
携帯電話向けのWebサイトなどでは、空メールを送ると登録の案内が送られてくるような仕組みがよく見受けられます。
ここでは、PostfixとPHPを連携させて、上記の様な"特定のメールアドレスに空メールが送信されると指定されたスクリプトが動作する"機能を実装します。
※Postfix及びPHPのインストールに関しては、本サイトの下記の記事をご参考ください。
Postfix・Dovecotのインストールと基本的な設定
PHPのインストールと基本的な設定
空メール処理スクリプトの実装
ここでは例として下記の様な仕様を持つ空メール処理スクリプトを実装します。
- 任意のメールアドレスから"reg@linuxserver.jp"へのメールが届くと、"/home/reg/reg.php"が動作する
- 送信元のメールアドレスを解析し、自動的に返信する
なお、メールアドレス"reg@linuxserver.jp"は既に使用できるという前提で進めます。
メールアドレスの生成方法などは下記をご参照ください。
Postfix・Dovecotのインストールと基本的な設定
PEAR::Mail_mimeDecodeのインストール
PEARのメール解析ライブラリである"Mail_mimeDecode"を下記コマンドでインストールします。
[root@centos ~] pear install Mail_Mime
既に"Mail_Mime"が存在している場合は下記のコマンドでアップグレードします。
[root@centos ~] pear upgrade Mail_Mime
インストール(※若しくはアップグレード)が正常に完了したか下記のコマンドで確認します。
[root@centos ~] pear list | grep 'Mail_' ~ 下記のように"Mail_mimeDecode"が表示されればOK ~ Mail_Mime 1.5.2 stable Mail_mimeDecode 1.5.0 stable
Postfixのエイリアスを設定
Postfixのalias(エイリアス)を使い、メールアドレス"reg@linuxserver.jp"宛のメールをPHPに引き渡すように設定します。
下記コマンドで、エイリアス設定ファイル"/etc/aliases"の末尾に設定を追記します。
[root@centos ~] echo 'reg: "|/usr/bin/php /home/reg/reg.php"' >> /etc/aliases
上記設定を反映するため、下記コマンドを実行します。
[root@centos ~] postalias /etc/aliases
空メール処理スクリプトの生成
設定したスクリプトのパス(※ここでは/home/reg/reg.php)に下記のソースでスクリプトを作成します。
decode($params);
$from = $structure->headers['from'];
$from = mb_decode_mimeheader($from);
$from = mb_convert_encoding($from, mb_internal_encoding(), 'auto');
if (preg_match('/<(.*)>$/', $from, $matches)) {
$from = $matches[1];
}
if(!$from) {
exit; // 送信元が取得できなかった場合は終了
}
/*
* メールの自動返信
*/
$to = $from;
$subject = "空メール自動返信の件名";
$body = "空メール自動返信の本文";
mb_internal_encoding("SJIS");
mb_language("japanese");
mb_send_mail($from, $subject, $body, 'reg@linuxserver.jp');
スクリプトの設置が完了したら実際に空メールを送信して動作確認を行います。

この記事へのコメント
まだコメントは投稿されていません。