kawama.jp

携帯の空メール機能を実装

カテゴリ: PHP — タグ: , , , , — 2006年3月14日 17:07 — Comments (3)hatebu count

仕事でやったので、次の機会のためにメモしときます。

やること

 1.ユーザーがregist@hoge.comへ空メールを送る

 2.サーバーでメールを受ける

 3.内容をコマンドラインphpに渡す

 4.phpでメール内容を解析し、ユーザーに会員登録用フォームのURLを挿入したメールを返信

aliasesの設定

vi等で/etc/aliasesを開き、おしりのところに以下を追加。

regist: "| /path/to/script/empty_mail_regist.php"

追加や編集をしたらnewaliasesを実行して設定を反映する。(忘れてしまいがちなので注意)

phpスクリプトを用意

/path/to/script/empty_mail_regist.phpを書く。PEARのMail_Mimeクラスを使ってヘッダを解析してます。

#!/usr/local/bin/php -q

<?php

//PEARのライブラリ読み込み

require_once('/path/to/pear/Mail/mimeDecode.php');

//メールソースを標準入力から読み込み

$source = file_get_contents("php://stdin");

if(!$source)

{

  echo "fail!\n";

  exit();

}

//メール解析

$params['include_bodies'] = true;

$params['decode_bodies']  = true;

$params['decode_headers'] = true;

$decoder = new Mail_mimeDecode($source);

$structure = $decoder->decode($params);

$from = mb_convert_encoding(mb_decode_mimeheader($structure->headers['from']), mb_internal_encoding(), "auto");

if( preg_match( '/<([^>]+)>$/', $from, $regs )){ $from=$regs[1]; }

$from = strtolower($from);

//会員登録用URL

$body = "https://hoge.com/user_regist.php?mail=" . rawurlencode($from);

//メール返信

mb_internal_encoding("utf-8");

mb_language("japanese");

mb_send_mail($from, "empty_mail", $body, "From: admin@hoge.com");

?>

以上。

仕組みがわかれば案外簡単です。(やってることが超シンプルってこともありますが)

上記の場合はヘッダからFromを取得してるだけですが、添付ファイルとかサブジェクトなどを取得する場合は日本語関連の問題などが出てきそうな気がします。

参考URL

http://labo0000.jp/maildo/maildo.html

3件のコメント »

  1. HOGE LUMBER COMPANYの関係者ならいいんですけど、hoge.comを使うとよくない気がしますよ

    http://pentan.info/else/form_example.html

    コメント by pentan — 2009年8月22日 @ 06:25

  2. […] phpで空メールサービス 携帯の空メール機能を実装 […]

    ピンバック by 空メール のプログラム(復習) | Linuxサーバでお気楽生活 by あらかんおやじ — 2010年10月29日 @ 11:14

  3. […] 携帯の空メール機能を実装 « kawama.jpのソース参考にさせてもらいました。 このサンプルソースでは所定のアドレスに空メールを送ると、自動的にそのメールアドレス情報を含んだURLを […]

    ピンバック by さくらのVPSで空メール受信システムを創る – [Mu]ムジログ — 2011年1月19日 @ 16:43

この投稿へのコメントの RSS フィード TrackBack URL

コメントをどうぞ

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

Copyright (C) 2002 - 2016 kawama All Rights Reserved. — Powered by WordPress

css.php