My_Mail
My_MailはZend_Mailの拡張コンポーネントクラスです。表題や本文ではSmartyテンプレートを使用しており、画面のビューファイルと同様に管理可能なようになっています。Zend_Mailのリファレンスは下記ページをご覧ください。
基本的な設定
My_Mailについての設定は以下のディレクトリにあります。このファイルに送信元のメールアドレス情報を記述します。
- application
-
configs
mail.ini
-
configs
ファイルの中には次のように書かれています。
[mail] ; メール送信を行うかどうか。0だとメール送信処理は行われず、ログとして保存される mail_enable = "1" ; SMTP認証を使うかどうか。1だとSMTP認証を行う smtp_auth_enable = "0" ; メールの差出人 from = "test@test.zend-ex.jp" ; メールの差出人名 from_name = "システム管理者" ; メールのBCC配信先。何らかのメールアドレスが含まれると常にBCCでそこにメールが送信される bcc = "" [smtp_auth] ; メールの認証。Plain、Login および Cram-md5に対応 ; smtp_auth = "Login" ; SMTPサーバの番号 ; smtp_host = "smtp.server.jp" ; SMTPサーバのユーザ名 ; smtp_username = "test@zend-ex.jp" ; SMTPサーバのパスワード ; smtp_password = "password" ; SMTPのポート番号。デフォルトでよければコメントアウトして下さい。 ; smtp_port = "25"
mail_enableを0とすると、メール送信処理が行われなくなり、代わりにログとして保存されるようになります。テスト環境やメンテナンスなど、メールを送信しなくない時に0としてください。
SMTP認証を必要とするサーバ環境の場合、smtp_auth_enableを1とした上で認証用のパラメータを入力して下さい。
メールテンプレート
メールテンプレートは次のディレクトリにあります。
- application
- modules
- admin
- views
- mail_templates
- body
- test.tpl
- title
- test.tpl
- body
- mail_templates
- views
- admin
- modules
それぞれsubjectが題名、bodyが本文に対応します。いずれもSmartyを使用しており、他のビューファイルと同様の規約で文章を作成できます。
基本的な使用方法
メールを送信するには次のように記述します。
$mail = new My_Mail(); // テンプレートへ渡す変数 $mail->assign('data', $data); $mail->send('test', 'send_to@test.zend-ex.jp');
My_Mail::assign($spec, $value)により変数を代入し、My_Mail::send($action, $to)によりメールを送信します。
$data = array('a' => 'aaa', 'b' => 'bbb', 'c' => 'ccc'); $mail = new My_Mail(); $mail->assign('data', $data);
このように書いた場合、メールテンプレート中では次のように変数が代入されます。
<{$data.a}> <{* aaaと表示されます *}> <{$data.b}> <{* bbbと表示されます *}> <{$data.c}> <{* cccと表示されます *}>
このほか、My_Translateで生成したトランスレータもアサインされるため、My_Translate経由でメッセージ表示も可能です。通常のビューファイル同様、下記のように$tを使ってメッセージを呼び出します。
<{* 「メッセージ1」が返される *}> <{$t->_('Message1')}>
My_Mail::send($action, $to)の第一引数は使用するメールテンプレートであり、mail_templatesディレクトリ下の題名や本文のファイルを取得してメール送信を行います。
ブログ記事
- メールの情報をログ保存に対応する (2012/02/12)
- My_MailでMy_Translateを利用可能なように修正 (2013/05/26)