いろいろ試行錯誤

調べものしたときの覚書きや、仕事でコーディングした時のメモ などなど…

Procmailによる自動返信→携帯サイトへ誘導

1.メールエイリアスの設定

# vi /etc/mail/virtusertable
apache@www.foo.com	        admin
admin@localhost.	        admin
root-admin@localhost.	        admin
admin@www.foo.com	        admin
sys@www.foo.com	                sys
postmaster@www.foo.com	        postmaster
MAILER-DAEMON@www.foo.com	MAILER-DAEMON
 :
info@www.foo.jp	dummy_web
 :
user@www.foo.jp	dummy_web(←追加)

2.Procmailの登録ファイルを更新

# cd /home/sites/www.foo.jp/users/dummy_web
# vi .procmailrc

PATH=/usr/bin:/usr/sbin
MAILDIR=$HOME
PMDIR=$HOME/.procmail
DEFAULT=/var/spool/mail/dummy_web
LOGFILE=$HOME/.procmail/log

# リーダー
:0 c :
*^To: .*<?leaders@foo.jp>?
| php .procmail/ml_leaders.php

# スタッフ
:0 c :
*^To: .*<?staff@foo.jp>?
| php .procmail/ml_staff.php

# マスター
:0 c :
*^To: .*<?staff-(chugoku|culturemanager|eventmanager|hokkaido|hokuriku|kanto|kyoto|kyusyu-yamaguchi|mie|nagano|osaka|publicityman ager|reportmanager|shiga|shikoku|shizuoka|tohoku|tokai|tokyo)@foo.jp>?
| php .procmail/ml_staff-master.php

# イベントマネージャー
:0 c :
*^To: .*<?staff-eventmanager@foo.jp>?
| php .procmail/ml_staff-eventmanager.php
()
# 大阪エリア
:0 c :
*^To: .*<?staff-osaka@foo.jp>?
| php .procmail/ml_staff-osaka.php
()
# 事業部用
:0 c :
*^To: .*<?sales-([0-9]|osaka|hokkaido|kanto|chiba|nagano|tokai|kyushu-yamaguchi|kyushu|hokuriku|kyoto|siga|keiji|chugoku|okayama| sikoku|tohoku|mie|tokyo)@foo.jp>?
| php .procmail/ml_sales.php
()

3.返信メール作成

# cd .procmail
# vi join_members.php

<?php
define("MODBASE", ".procmail/");
define("MODNAME", "join_members");

require "../../../phplibs/sendMail.inc";
mail = new Sendmail();

$CR = "\x0d";
$NL = "\x0a";
$CRNL = $CR . $NL;
$BS = "\x5c";

$source = "";
$processid = date("YmdHis") . "_" . getmypid();

$rfp = fopen("php://stdin", "r");
while ($line = @fread($rfp, 500)) {
    $source .= $line;
}
fclose($rfp);

// メールの全てをログファイルに出力する
$wfp = fopen(MODBASE . MODNAME. "_log/" . $processid, "w");
fwrite($wfp, $source);
fclose($wfp);

//メールをヘッダーと本文に分割
list($header, $body) = preg_split("/($CRNL$CRNL|$NL$NL)/", $source , 2);
$header = preg_replace("/($CRNL|$NL)[\t ]+/", " ", $header);
$body = preg_replace("/($CRNL|$NL)[\t ]+/", " ", $body);

//宛先を抽出
if (preg_match("/to: .+<(.+)@(.+)>($CRNL|$NL)/i", $header, $match) || preg_match("/to: (.+)@(.+)($CRNL|$NL)/i", $header, $match)) {
    $madr_from = $match[1] . "@" . $match[2];
    $madr_from = preg_replace("/(<|>)/", "", $madr_from);
}

//送信者を抽出
if (preg_match("/from: .+<(.+)@(.+)>($CRNL|$NL)/i", $header, $match) || preg_match("/from: (.+)@(.+)($CRNL|$NL)/i", $header, $match)) {
    $madr_to = $match[1] . "@" . $match[2];
    $madr_to = preg_replace("/(<|>)/", "", $madr_to);
}

$wfp = @fopen(MODBASE . MODNAME. "_dat/" . $processid, "w");
@fwrite($wfp, $madr_to . "\n");
@fclose($wfp);
chmod(MODBASE . MODNAME. "_dat/" . $processid, 0666);

$body = "イベント特設ページをご案内致します!\n"
. " ↓↓↓\n"
. "http://www.foo.jp/~dummy_web/special.php"
. "\n\n"
. "◆オフィシャルサイト◆\n"
. "http://www.bar.com/top.html";

$body = i18n_convert($body, "SJIS", "EUC");
$subject = i18n_convert("■EVENT NEWS■", "SJIS", "EUC");
$mail->execSystemSend("info@foo.jp", $madr_to, $subject, $body);

4.携帯サイト作成

# cd /home/sites/www.foo.jp/users/dummy_web/web/
# vi .htaccess

AddType application/x-mpeg .amc
AddType video/3gpp2 .3g2
AddType video/3gpp .3gp

# vi special.php

<?php
$baseurl = "http://www.foo.jp/~dummy_web/";
//HTTP_USER_AGENTを分割
$agent = $_SERVER["HTTP_USER_AGENT"];
//echo $agent."<br>";

// pc
if (0 && preg_match("/^Mozilla\//i", $agent)) {}
else {
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
    // i-mode
    if (preg_match("/^DoCoMo\/[12]\.0/i", $agent)) {
        //echo "i-mode<br>";
//-------------------------------------------------------------------------
        echo <<<EOF
<html>
<head>
<title>Event special movie</title>
</head>
<body bgcolor="#ffffff" text="#000000" link="#3366ff" vlink="#9999ff" alink="#ccffff">
<center><img src="images/P1060239_s.jpg"></center>
<center>
<font size="2">Event Special Site</font><br>
<font size="1">------------------------------</font><br>
<object declare id="special" data="special.3gp" type="video/3gpp">
<param name="stream-type" value="10" valuetype="data">
</object>[ <a href="#special">MOVIE</a> ]<br>
<font size="1">お使いの機種により動画が<br>再生できない場合があります</font><br>
<font size="1">------------------------------</font><br>
</center>
<img align="left" src="images/P1060218_s.jpg">
<font size="2">「<a href="zpphotos_1.php">Special Photo1</a>」</font><br>
<font size="2">Zepp Osaka 周辺で撮影したスペシャルフォトを掲載中!
<br clear="all">
<center>
<font size="1">------------------------------</font><br>
</center>
<img align="left" src="images/IMG_0462_s.jpg">
<font size="2">「<a href="zpphotos_2.php">Special Photo2</a>」</font><br>
<font size="2">Zepp Osaka でのライブの模様を掲載中!
<br clear="all">
<center>
<font size="1">------------------------------</font><br>
<br>
<font size="1">+:*:+ +:*:+ +:*:+ +:*:+ +:*:+<br>
<a href="http://www.bar.com/top.html">Copyright (C) BAR<br>All rights reserved.</a></font>
</center>
EOF;
//-------------------------------------------------------------------------
    }
    // softbank
    elseif (preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]980|SoftBank)\//i", $agent)) {
        //echo "softbank<br>";
//-------------------------------------------------------------------------
        echo <<<EOF
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>Event special movie</title>
</head>
<body bgcolor="#ffffff" text="#000000" link="#3366ff" vlink="#9999ff" alink="#ccffff">
<center><img src="images/title_s.jpg"></center>
<center>
<font size="2">Event Special Site</font><br>
<font size="1">------------------------------</font><br>
[ <a href="special.3gp">MOVIE</a> ]<br>
<font size="1">お使いの機種により動画が<br>再生できない場合があります</font><br>
<font size="1">------------------------------</font><br>
</center>
<img align="left" src="images/P1060218_s.jpg">
<font size="2">「<a href="zpphotos_1.php">Special Photo1</a>」</font><br>
<font size="2">Zepp Osaka 周辺で撮影したスペシャルフォトを掲載中!
<br clear="all">
<center>
<font size="1">------------------------------</font><br>
</center>
<img align="left" src="images/IMG_0462_s.jpg">
<font size="2">「<a href="zpphotos_2.php">Special Photo2</a>」</font><br>
<font size="2">Zepp Osaka でのライブの模様を掲載中!
<br clear="all">
<center>
<font size="1">------------------------------</font><br>
<br>
<font size="1">+:*:+ +:*:+ +:*:+ +:*:+ +:*:+<br>
<a href="http://www.bar.com/top.html">Copyright (C) BAR<br>All rights reserved.</a></font>
</center>
EOF;
//-------------------------------------------------------------------------
    }
    // au
    elseif (preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent)) {
//-------------------------------------------------------------------------
        echo <<<EOF
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<title>Event special movie</title>
</head>
<body bgcolor="#ffffff" text="#000000" link="#3366ff" vlink="#9999ff" alink="#ccffff">
<div align="center">★Special Site★</font></div>
<center><img src="images/title_s.jpg"></center>
<center>
<font size="2">Event Special Site</font><br>
<font size="1">------------------------------</font><br>
[ <object data="special.3g2" type="video/3gpp2" copyright="no" standby="MOVIE" >
<param name="disposition" value="devmpzz" valuetype="data" />
<param name="size" value="178660" valuetype="data" />
<param name="title" value="gstspecial" valuetype="data" />
</object> ]
<font size="1">お使いの機種により動画が<br>再生できない場合があります</font><br>
<font size="1">------------------------------</font><br>
</center>
<img align="left" src="images/P1060218_s.jpg">
<font size="2">「<a href="zpphotos_1.php">Special Photo</a>」</font><br>
<font size="2">Zepp Osaka 周辺で撮影したスペシャルフォトを掲載中!
<br clear="all">
<font size="1">------------------------------</font><br>
<img align="left" src="images/IMG_0462_s.jpg">
<font size="2">「<a href="zpphotos_2.php">Special Photo2</a>」</font><br>
<font size="2">Zepp Osaka でのライブの模様を掲載中!
<br clear="all">
<font size="1">------------------------------</font><br>
<br>
<center>
<font size="1">+:*:+ +:*:+ +:*:+ +:*:+ +:*:+<br>
<a href="http://www.bar.com/top.html">Copyright (C) BAR<br>All rights reserved.</a></font>
</center>
EOF;
//-------------------------------------------------------------------------
    }
    // willcom
    elseif (preg_match("/^PDXGW/i", $agent) || preg_match("/(DDIPOCKET|WILLCOM);/i", $agent))
    {
            echo "WILLCOMは対応していません";
    }
    // l-mode
    elseif (preg_match("/^L\-mode/i", $agent))
    {
            echo "L-MODEは対応していません";
    }
    // 他
    else
    {
            echo "対応していません";
    }
//-------------------------------------------------------------------------
    echo <<<EOF
</body>
</html>
EOF;
//-------------------------------------------------------------------------
}
?>


			
機種動画フォーマット拡張子
DoCoMo i-modevideo/3gpp3gp
J-PHONE/Vodafone/SoftBank-3gp
KDDI auvideo/3gpp23g2