メールの送信(Zend_Mail)

hetemlのメールサーバを使ってメールを送信してみた。
プログラムのサンプルはこんな感じ。

require_once('Zend/Loader.php');
Zend_Loader::loadClass('Zend_Mail');
Zend_Loader::loadClass('Zend_Mail_Transport_Smtp');
Zend_Loader::loadClass('Zend_Date');

$date = new Zend_date();

$config = array('auth'     => 'login',
       'username' => 'ユーザ名',
       'password' => 'パスワード');

$transport = new Zend_Mail_Transport_Smtp('メールサーバ名', $config);

$mailSmtp = new Zend_Mail('UTF-8');
$mailSmtp->setBodyText('本文');
$mailSmtp->setSubject('件名');
$mailSmtp->setFrom('Fromアドレス', 'From名');
$mailSmtp->addTo('Toアドレス');
$mailSmtp->addHeader('Date', $date->now()->get(Zend_Date::RFC_2822));
$mailSmtp->send($transport);

ほとんど、ドキュメントのサンプルソースを参考にしたら動いたが、ひっかかった点が以下の2点。
・日本語の文字化け
・送信日時が設定されない

日本語の文字化けは、使用している文字コードを Zend_Mailの生成時に
パラメタとして渡すことで化けなくなった。
生成時にISO-2022-JPをパラメタとし、本文と件名をmb_convert_encodingで、
ISO-2022-JPにエンコードしてから渡しても文字化けしないことも確認しました。
UTF-8としたのは、プログラムファイルの文字コードをUTF-8としているためです。

あと、なぜかわかりませんが、普通に送信したら、送信日時が空欄で届きました。
そのため、メールヘッダの Date(送信日時)を自力で設定しています。
Zend_Dateを使って、現在日時を取得し、メールヘッダに利用される
Zend_Date::RFC_2822という型に変形したものを設定しています。

メールの送信(Zend_Mail)