My_Mail

My_MailはZend_Mailの拡張コンポーネントクラスです。表題や本文ではSmartyテンプレートを使用しており、画面のビューファイルと同様に管理可能なようになっています。Zend_Mailのリファレンスは下記ページをご覧ください。

http://framework.zend.com/manual/ja/zend.mail.html

基本的な設定

My_Mailについての設定は以下のディレクトリにあります。このファイルに送信元のメールアドレス情報を記述します。

  • application
    • configs
      • mail.ini

ファイルの中には次のように書かれています。

[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

それぞれ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ディレクトリ下の題名や本文のファイルを取得してメール送信を行います。