ようこそゲストさん

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

メッセージ欄

2008年9月の日記

2008/09/30(火) 2008-09-30

Qdmaiのダウンロードページはこちら
  • 2008-09-30
    • 1.1.5b
mimeEncodeの最初の1行につき、75文字制限を守ることができるよう、第4引数追加
sendmail送信で、bccにメールが送信されないバグ修正。sendBySendmailメソッドの修正($recipient指定)
mimeEncode()メソッドにて、終端文字¥0、単独CRを削除するpregを挿入(qmailエラー対策)

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

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

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

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

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

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

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

# yuipapa 『最近、使用するサイトが急激に増えている模様の、FuelPHPの使用例があると助かります。』 (2013/04/15 27:16)

# gura 『コントローラで \Autoloader::add_class('Qdmail',APPPATH.'vendor/qdmail.p...』 (2014/12/08 19:15)

2008/09/27(土) 2008-09-26

Qdmaiのダウンロードページはこちら
  • 2008-09-27
    • 1.1.4b
mb_detect_encodingの第3引数にtrue(strict)を指定するようにした。
mimeEncodeMax()メソッドの追加
debug モード時に、X-QdmailDebugヘッダーをつけるようにした。

ZendFrameWorkで日本語完璧メール

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は簡単に各キャリアに送信できます。

# fffffff 『fff』 (2012/12/03 18:34)

Ethnaで日本語メール送信

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 メール送信サンプル