メールの送信(Zend_Mail)

hetemlのメールサーバを使ってメールを送信してみた。

プログラムのサンプルはこんな感じ。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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) はコメントを受け付けていません。
コメントは閉じられています。

return top

%d人のブロガーが「いいね」をつけました。