サイトでの会員登録などで、空メールを受信すると自動で登録用URLなどを返信したい場合があるかと思います。
さくらインターネットで、自動メール返信するスクリプトを使用する方法をご紹介します。
.mailfilterでPHPへメールを転送する
以下の場所に.mailfilterファイルを作成します。
/home/{さくらアカウント名}/MailBox/{メールアカウント名}/.mailfilter
- to "| /usr/local/bin/php -q /home/{さくらアカウント名}/www/reply.php"
- exit
これで、受信メールをreply.phpで受け取ります。
サーバーに受信メールを残したい場合は、先頭の「to」を「cc」に変えます。
- cc "| /usr/local/bin/php -q /home/{さくらアカウント名}/www/reply.php"
- exit
受信メールを解析し、自動返信メールを送信する
PEARのMail_mimeDecodeを使用して、受信メールを解析します。
- #!/usr/local/bin/php -q
- <?php
- //PEARのパスを設定
- $path = '/home/{さくらアカウント名}/pear/PEAR/';
- set_include_path(get_include_path() . PATH_SEPARATOR . $path);
- require_once '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";
- if (!$params['input']) {
- // 読み込み失敗
- exit();
- }
- $structure = Mail_mimeDecode::decode($params);
- //送信者のメールアドレスを抽出
- $mail = $structure->headers['from'];
- $mail = addslashes($mail);
- $mail = str_replace('"','',$mail);
- $mail = preg_replace('/(^.*<|>$)/', '', $mail);
- // メール作成
- $from = {メールアドレス};
- $head = "From: $from\n";
- $subject = 'メール件名';
- $body = 'メール本文';
- // メール送信
- mb_language('japanese');
- mb_internal_encoding('EUC-JP');
- mb_send_mail($mail, $subject, $body, $head, $from);
- ?>