PHPコーディング
【.forward】から転送されたメールの処理
2011年06月02日
【.forward】から転送されたメールは、
if(($objMail = @fopen("php://stdin", "rb")) == true ){
while(!feof($objMail)){
$strLine.= fgets($objMail, 4096);
}
}
@fclose($objMail);
で読み込むことができます。
上のソースだと、$strLine にはメールヘッダも本文も、全てが取り込まれるので、ここから必要な情報を抜き出していくことになります。
ヘッダと本文は、【¥n¥n】と改行コードが2回続くことで区切られています。
【¥n¥n】より前がヘッダ、後ろが本文です。
ちなみに、ヘッダも本文も、メールの改行コードは【¥n】です。
更にヘッダは
・
・
To: 送信先メールアドレス
Subject: 件名
From: 差出人名 <差出人メールアドレス>
・
・
のようになっています。1行ずつチェックして、上の形式から必要な情報を取り出します。
メールの差出人を会員などに登録する場合、【差出人メールアドレス】を抜き出し、登録処理を行えばOKです。
【To: 】と【From: 】以降は、
名前 <メールアドレス>
の場合もあれば、
<メールアドレス>
の場合も、
メールアドレス
の場合もあります。
名前、件名などに、日本語が含まれる場合、エンコードされてますから、【mb_decode_mimeheader】でデコードしてください。
メール受信と同時にCGIを実行と合わせれば、【ビジネス羅針盤 ステップメール】を空メール登録に対応させることができます。
if(($objMail = @fopen("php://stdin", "rb")) == true ){
while(!feof($objMail)){
$strLine.= fgets($objMail, 4096);
}
}
@fclose($objMail);
で読み込むことができます。
上のソースだと、$strLine にはメールヘッダも本文も、全てが取り込まれるので、ここから必要な情報を抜き出していくことになります。
ヘッダと本文は、【¥n¥n】と改行コードが2回続くことで区切られています。
【¥n¥n】より前がヘッダ、後ろが本文です。
ちなみに、ヘッダも本文も、メールの改行コードは【¥n】です。
更にヘッダは
・
・
To: 送信先メールアドレス
Subject: 件名
From: 差出人名 <差出人メールアドレス>
・
・
のようになっています。1行ずつチェックして、上の形式から必要な情報を取り出します。
メールの差出人を会員などに登録する場合、【差出人メールアドレス】を抜き出し、登録処理を行えばOKです。
【To: 】と【From: 】以降は、
名前 <メールアドレス>
の場合もあれば、
<メールアドレス>
の場合も、
メールアドレス
の場合もあります。
名前、件名などに、日本語が含まれる場合、エンコードされてますから、【mb_decode_mimeheader】でデコードしてください。
メール受信と同時にCGIを実行と合わせれば、【ビジネス羅針盤 ステップメール】を空メール登録に対応させることができます。
コメント