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を実行と合わせれば、【ビジネス羅針盤 ステップメール】を空メール登録に対応させることができます。