その他のフレームワーク対応

2008/09/29 未分類 spok
Qdmailを利用して、フレームワークからメールを送信する場合、もっとも問題になるのが、メール本文のデータを、フレームワークから、Qdmailへどうやって渡すか、ということです。

通常のMVC分離型のフレームワークの場合、コントローラーからビューの内容を簡単に取得できるのであれば、それをQdmailに
$mail -> text( ビューの内容 );
として渡してやれば、それで終了です。

実際に、ZendFrameWork,CodeIgniter,Ethnaは、ビューの出力内容を簡単にコントローラーで取り出せるので、あまり深く考えずに対応することができます。

したがって、未知のフレームワークでも、ビュー出力の内容の取り出し方さえわかれば、特段の問題はありません。

一方でSymfony,CakePHPのように、ビューの出力内容を取り出せない場合は、Qdmail本体に描画機能を持たせる必要があり、若干面倒です。

そのようなフレームワークについては今後、ご要望があれば(&時間があれば)、対応してきたいと思います。

ZendFrameWorkで日本語完璧メール

2008/09/27 未分類 spok
ZendFrameWorkには、Zend_Mailというライブラリがありますが、日本語の処理に難点があるようです。

Qdmailでは、以下のようにします。
ZendFrameWorkのフォルダにqdmail.phpを入れても良し、他のインクルードディレクトリにいれてもよしです。
$mail = new Qdmail();
$mail -> text( 'ここに内容をいれます' );
$mail -> from( 'from@example.com' , '配信元日本語名' );
$mail -> to( 'address@example.com' , '宛先日本語名' );
$mail -> subject( 'タイトルも日本語で' );
$mail ->send();
もし、ビューの内容を送信したいのであれば、
$mail ->send( $this->render() );
でOKです。

Zend_Mailより、マルチバイト対応をしっかりしている(はず)ですので、日本語の題名などのヘッダーも文字化けは少ないと思います。
おまけにZend_Mailでは、デコメを送信するのは至難の業ですが、Qdmailは簡単に各キャリアに送信できます。

Ethnaで日本語メール送信

2008/09/27 未分類 spok

EthnaでQdmailを使用する

EthnaでQdmailを使用すれば、テキストメール、HTMLメールはもちろん、デコメも簡単に送信できます。

サンプルコード(アクション)

qd_send_mail型

class Mailtest_Action_Index extends Mailtest_ActionClass
{
        function perform()
        {

            include_once('qdmail.php');

            $regist_user='田中';

            $ethna_mail =& new Ethna_MailSender($this->backend);
            $content = $ethna_mail->send(null,
                'testmail.tpl',
                array('username' => $regist_user));

            qd_send_mail('html',
                'address@mail456.com',
                'えすなテスト',
                $content,
                'from@exaple.com',
                null
            );
                return;
        }
}

OOP型

            include_once('qdmail.php');

            $regist_user='田中';

            $ethna_mail =& new Ethna_MailSender($this->backend);
            $content = $ethna_mail->send(null,
                'testmail.tpl',
                array('username' => $regist_user));

       $mail -> html($content);
       $mail -> to( 'address@example,com' );
       $mail -> from( 'from@example,com' );
       $mail -> subject( 'えすなテスト' );

            return;
        
要は$contentにメールの内容を入れてしまえば、後は普通のQdmailの使い方と同じです。
テンプレートの例示
template/ja/mail/mailtest.tpl
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp" />
<link rel="stylesheet" href="{$config.url}css/ethna.css" type="text/css" />
</head>
<body>

<div id="header">
    <h1>Mailtest</h1>
</div>

<div id="main">
    <h2>メールテスト</h2>
    <p>こんにちは、{$username}さん</p>
</div>

<div id="footer">
    Powered By <a href="http://ethna.jp">Ethna</a>-{$smarty.const.ETHNA_VERSION}.
</div>

</body>
</html>

参考

Ethna メール送信サンプル

推奨する環境

2008/09/27 未分類 spok
最も問題の出にくい、推奨する環境は以下の通りです。

PHP4の場合、PHP 4.4.9
PHP5の場合、PHP 5.2.6以降

スクリプト文字コード:UTF-8に統一
送信方法:SMTP (Qdsmtpと組み合わせ)