データベースから一気に差し込み

2008/08/02 未分類 spok

データベース連動

データベースから、データをフェッチ(Fetch)した場合、多くの場合、次のようなデータ構造になっているはずです。
(もちろん、フィールド名やデータは例です。)
$data = array(
	array('name'=>'スポック','id'=>1,'mail'=>'spok@example.com',
              'age'=>'24','address1'=>'東京都品川区','address2'=>'三田0-0-0',
              'tel'=>'03-0000-0000',),
	array('name'=>'カーク','id'=>2,'mail'=>'kirk@example.com',
              'age'=>'20','address1'=>'大阪府大阪市','address2'=>'難波0-0-0',
              'tel'=>'06-0000-0000',),
	array('name'=>'ウフーラ','id'=>3,'mail'=>'urhoora@example.com',
              'age'=>'22','address1'=>'愛知県名古屋市','address2'=>'中央区近衛0-0-0',
              'tel'=>'045-0000-0000',),
	array('name'=>'マッコイ','id'=>4,'mail'=>'maccoy@example.com',
              'age'=>'50','address1'=>'鹿児島県鹿児島市','address2'=>'中区聖0-0-0',
              'tel'=>'092-0000-0000',),
);
このデータを一気に、Qdmailに差し込むことで、上記のデータの場合、4人にそれぞれ個人別にカスタマイズしたメールを一度に送信することができます。
通常、$to として、宛先を指定する引数に、$dataをします。
そして、件名や本文で、置き換えたい項目を%記号で囲みます。
サンプルをみるのが早いでしょう。上記の$dataが入っているものとします。
上記の$dataのメールアドレス部分を自分が管理している別のメールアドレスに入れて試してください。
require_once('qdmail.php');

$subject="こんにちは、%name%さん。";

$body="%name%さんの登録内容をお送りします。

名前:%name%
id: %id%
メールアドレス:%mail%
年齢:%age%
住所:%address1% %address2%
TEL: %tel%
専用URL:http://example.com/login/?id=%id%

このように、qd_send_mailでは、簡単にインサートメールを送信することができます。";

$from = array( 'from@example.com' , '送り元日本語名' );
$option = array('type'=>'text','option'=>array('simpleReplace'=>true));

$flag = qd_send_mail( $option , $data , $subject , $body , $from );
この
$option = array('type'=>'text','option'=>array('simpleReplace'=>true));
の部分が、SimpleReplace機能をONにする箇所です。

フィールド名と連動

%でデータベースのフィールド名を囲めば(%フィールド名%)、自動的にリプレースされるわけですが、どのフィールドのデータをメール宛先の送信者表示名にするか、どれが送信先のメールアドレスなのかを指定する必要があります。
デフォルトでは、次のようになっています。
フィールド名意味
mail送信先メールアドレス
name送信先表示名
しかし、あなたのデータベースでは、必ずしも、上記のフィールド名になっておらず、メールアドレスが、mail_address だったり 表示名が pen_name だったりするかも知れません。
その時、SimpleReplaceは、正常に動作しますが、Qdmailは肝心の送信先アドレスを見失ってしまいます。
ですので、mail,nameではなない場合は、次の指定を加えてください。
$op = array( 'simpleReplace'=>true,
             'addressField'=>array('mail_address','pen_name')
 );

$option = array('type'=>'text','option'=>$op);