一般関数タイプ

2008/05/08 未分類 spok

メールヘッダーの取得

メール差出人の名前部分
echo qd_receive_mail( 'header' , array('from','name') );
メール差出人のメールアドレス
echo qd_receive_mail( 'header' , array('from','mail') );
メール差出人関係の情報を一括取得
$from = qd_receive_mail( 'header' , array('from') ) ;
または
$from = qd_receive_mail( 'header' , 'from' );
でも可能
$from には、配列形式で、fromヘッダーから解析された情報が代入されます。

他のヘッダーについても、同様に取り出すことができます。
  • 注意点!
    メールヘッダーの「名称」は、すべて「小文字」で指定してください。
    Subjectは×。subjectは○です。
    
メール件名
$subject = qd_receive_mail( 'header' , array('subject','name') );
メール件名関係の情報を一括取得
$subject = qd_receive_mail( 'header' , array('subject') );
または
$subject = qd_receive_mail( 'header' , 'subject' );
でも可能
ヘッダー情報を全部配列で取得
$header = qd_receive_mail( 'header' , 'ALL' );

メール本文の取得

$body = qd_receive_mail( 'body' );
これで、htmlメールの場合は、html部分を取得し、テキストメールの場合は、テキスト部分を取得します。
テキスト部分は以下の形でも取得できます。
$body = qd_receive_mail( 'text' );
この形式は、テキスト部分を取得します。htmlメールであっても、代替テキストを取得します。
代替テキストがないhtmlメールの場合は、nullとなります。

html部分の取得。
$body = qd_receive_mail( 'html' );
テキストメールの場合は、nullとなります。
一般的には'body'コマンドを使用したほうがいいでしょう。

添付ファイルの取得

$attach = qd_receive_mail( 'attach' );
以下の形で、添付ファイルの配列が$attachに格納されます。
(例)
array(
    0 => array(
         'value' => '添付ファイルの中身(デコード済みのバイナリ)',
         'finename' => 'ファイル名(日本語デコード済み)',
         'finename_safe' => 'urlencode済みのファイル名',
         'content-type' => 'image/jpg',
         'enc' => 'base64',
        ),
    1 => array(
         'value' => '添付ファイルの中身(デコード済みのバイナリ)',
         'finename' => 'ファイル名(日本語デコード済み)',
         'finename_safe' => 'urlencode済みのファイル名',
         'content-type' => 'image/jpg',
         'enc' => 'base64',
         'content-id' => '........',
    ),
);
'finename'は、マルチバイト(日本語)のファイル名にデコード済みですので、そのままwindowsなどで、そのファイル名で保存しようとすると不都合がでる場合もあります。その場合は、ご自分でsjisにエンコードしてからお使いください。
(もちろん、元のファイル名がアルファベットファイル名であれば、特段の問題はでないと思います。)
'finename_safe'は、ファイル名をurlencodeしていますので、このままファイル名として保存しても、大丈夫なようにしています(windows,unix,linux)。

添付ファイルを保存するサンプルコード
$attach = qd_receive_mail( 'attach' );
foreach($attach as $att){
    $fp=fopen($att['filename_safe'],'w');
    fputs($fp,$att['value']);
    fclose($fp);
}