デコメテンプレートで送信する。端末シミュレート

2008/08/27 未分類 spok
Qdmail 1.0.7b以降ではQdmailReceiverと組み合わせることで、デコメテンプレート形式のデータをデコメとして送信することができます。つまり、携帯端末のシミュレートをすることができます。自分で作成したデコメテンプレートが正常にデコードされるかどうのテスト等に使えます。もしくは、ネットで拾ったデコメテンプレートがどんなものかを自分宛に送信してみるのもよいでしょう。

サンプルコード

qd_mail_receiver.phpは、インクルードパスの通った場所に配置しておいてください。Qdmailが自動で読み込みます。もし、自動読み込みがうまく行かない場合には、明示的に、qd_mail_receiver.phpファイルをインクルードしてください。
サンプル
$to ="address@exmaple.com";
$template_filename = 'docomo4_0.dmt';
$template = file_get_contents($template_filename);
qd_send_mail('DecoTemplate',$to,'テンプレートテスト',$template,'from@example.com');
これでドコモのデコメテンプレートの内容をいったんデコードした上で、address@exmaple.comにデコメールを送信します。
qd_send_mail('DecoTemplate',$to,'テンプレートテスト',$template,'from@example.com');
の代わりに
$mail -> easyDecoTemplate($to,'テンプレートテスト',$template,'from@example.com');
でも、構いません。

デコメテンプレート作成(変換)機能

2008/08/27 未分類 spok
QdmailReceiverとQdmail(1.07b以降)を組み合わせると、ドコモのテンプレートからauのテンプレート等、各キャリアに合わせたテンプレートに変換することができます。その上に、テンプレートではなく、デコメそのものからデコメテンプレートを抽出したり、MHTLメール(インラインHTML)から、各キャリアのデコメのテンプレートを作成することができます。

変換バリエーション

変換元
Docomo,au,Softbankのデコメテンプレート。インラインHTMLメール(MHTML)。通常のHTMLメール。テキストメール
   ↓
変換先
Docomo,au,Softbankの各デコメテンプレート

解説

内部的には、QdmailReceiverを利用して、変換元のメールをデコードして、Qdmail形式の配列に変換します。
それでもって、Qdmailのメール作成機能を援用して、各キャリアに適合したデコメテンプレートを作成します。

サンプルコード

$mailには、Qdmailのインスタンスが入っているものとします。
qd_mail_receiver.phpをインクルードパスが通っているディレクトリに配置しておいてください。Qdmailが自動的に読み込みます。自動読み込みがうまくいかない場合は、
include('qd_mail_receiver.php');
として明示的に読み込んで下さい。
$file には、デコメテンプレートのパス&ファイル名が入っているものとします。
サンプルコード(ドコモテンプレートからauテンプレートへの変換)
$file = 'templatefile.dmt';
$mail = & new Qdmail();
$content = file_get_contents($file);
$au_template = $mail -> makeDecoTemplate('TPL_AU',$content);
PHP5では、newの前の & は必要ありません。

第1引数は以下の選択肢があります。
'TPL_DC'ドコモ用テンプレート
'TPL_AU'au用テンプレート
'TPL_SB'SoftbankMobile用テンプレート
$contentの中身は、どんなキャリアのテンプレートでも大丈夫です。
テンプレートでなくても、メールそのものでも大丈夫です。その場合は、ヘッダーも含めたメール全データをぶち込んで下さい。

この機能を使ったサービス例

デコメ→3種テンプレート変換

return値の設定

2008/08/13 未分類 spok
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
 );

レンダーモード

2008/08/13 未分類 spok

レンダーモードとは

(バージョン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 , .......);
となります。