ようこそゲストさん

Qdmail - PHP::Mail Library , Quick and Detailed for Multibyte

return値の設定

Qdmail 1.0.3b以降では、任意のメソッドの値を返り値とする配列を、qd_send_mailの返り値にすることができます。

以下の例は、事前に文字コードをutf-8,base64に変更し、ログ機能をONにした上で、メールを送信し、送信した後に、sizeBody(),smtpData() メソッドを実行して、その返り値を、$option と同じ形で返します。
 $return = array(
    'sizeBody'=>null,
    'smtpData'=>null
 );
 $before = array(
     'charset'=>array('utf-8','base64'),
     'logLevel'=>1
 );
 $type = 'text';
 $option = array( 'type'=> $text , 'option'=>$before , 'return' =>$return );

 $ret = qd_send_mail(
        $option ,
        'address@example.com',
        'タイトル',
        '本文',
        'from@example.com'
  );
$ret は、第1引数の$opiton のキーreturn が設定されていない場合は、メール送信ができたらtrue,エラーだった場合はfalseを返します。
しかし、returnキーが設定されている場合は、メールを送信した後に、returnキーの奥のさらに配列のキー名のメソッドが実行され、その返り値が、配列として返されます。

上記のサンプルコードでは、$ret には以下のような配列が返されます。
Array
(
    [type] => text
    [option] => Array
        (
            [charset] => Array
                (
                    [0] => utf-8
                    [1] => base64
                )

            [logLevel] => 1
        )
    [return] => Array
        (
            [sizeBody] => 12 //例示
            [smtpData] => '(ヘッダー+本文データ)'
            [qd_send_mail] => true
        )
)
キーqd_send_mailには、問題がなかった場合はtrue,エラーがあった場合には、falseが返されます。

メールを送信せずに返り値だけ欲しい場合

 $before = array(
     'charset'=>array('utf-8','base64'),
     'logLevel'=>1,
     'renderMode'=>true
 );

#  非公開コメント   
  • TB-URL  http://hal456.net/qdmail/064/tb/

レンダーモード

レンダーモードとは

(バージョン1.0.3b以降の機能です。0系では使用できません。)

レンダーモードとは、メールの作成まで行い、最後の送信は実行しないモードです。
メールのヘッダー、本文のビルド&レンダー(作成完了まで)は行います。

どんな時にレンダーモードを使用するか?

例えば。。。
  • メール本文まではQdmailで作成し、後は自作のSMTPプログラムで送信する。
  • 正確なメール本文のバイト数を送信前に事前に知りたい
  • 送信前にエラーがでるかどうか知りたい
レンダーモードでは、$mail -> send() メソッドを実行しても、実際にはメールは送られません。
Qdmailでは、$mail->send()メソッド内にて、メールの作成を行うので、このような仕様にしました。

レンダーモードの指定方法

メソッド名は、renderMode() です。

基本的なOOPモード,easyモードでは
$mail -> renderMode( true );
qd_send_mail()モードでは、
$option = array( 'renderMode'=>true );
$type = array( 'type'=>'text' , 'option' => $option );
qd_send_mail( $type , $to , .......);
となります。

# donk 2009年09月04日(金) 午後3時53分

レンダーモードで、$mail -> send() した後に、
作成されたメール本文のデータを参照するにはどのようにすればよろしいでしょうか?


#  非公開コメント   
  • TB-URL  http://hal456.net/qdmail/061/tb/

smtp用メールデータのみを取得する

(この機能は、バージョン1.0.3b以降です。0系では使用できません。)

Qdmailで作成したsmtp用メール全データを渡すメソッドです。
このメソッドでは、送信されることはありません。
Qdmailでメールデータだけを作成し、他のSMTP送信ソフトなどで送信する場合などにご利用ください。
$mail -> smtpData();
このメソッドで、以下のようなsmtp用のデータを取得することができます。
(ヘッダー)
CRLF
(本文、添付ファイル等のマルチパートも含むデータ)

#  非公開コメント   
  • TB-URL  http://hal456.net/qdmail/063/tb/

メールデータサイズを知る

(この機能は、バージョン1.0.3b以降です。0系では使用できません。)

Qdmailが作成したメールのバイト数を知ることができます。
例えば、デコメなど容量制限のあるサービスを使用する際には、事前にメールのデータサイズを把握しておく必要がありますってことで。
注意点
メールのヘッダーは、中継サーバーがヘッダー情報を加えていきますので、最終到達地点の正確なヘッダーデータサイズを知ることは不可能です。ここで照会するヘッダーサイズは、あくまでもQdmailが作成したヘッダーサイズです。本文サイズは、変わることはありません。

メール本文のサイズ

$mail -> sizeBody();

メールヘッダーのサイズ

$mail -> sizeHeader();

メールの全サイズ

$mail -> sizeAll();
メールヘッダーとメール本文の間には、CRLFが入りますので、
全サイズ = ヘッダーサイズ + 本文サイズ +2バイト(CRLF)
の関係が成り立ちます。

#  非公開コメント   
  • TB-URL  http://hal456.net/qdmail/062/tb/