symfony1.4で日本語のメールを送れるようにする

今更ながらsymfony1.4ですが・・・
日本語メール(iso-2022-jp)を送らなければならない機会にまだまだ遭遇して毎回検索するのもめんどうなので覚書。
jpSimpleMailPluginをインストールするだけでらくちんぽんで日本語メールが送れる優れもの!

インストールから送信まで楽々。
まずはインストール。openpear.orgからsymfonyコマンドで落とせるよ。

./symfony plugin:add-channel openpear.org
./symfony plugin:install --force-license --release=1.0.0 openpear.org/jpSimpleMailPlugin

だけwインストールされたかの確認は

./symfony plugin:list

実行でjpSimpleMailPluginが出力されればOK!
早速action内でのメール送信実装。
symfony1.4であればSwiftMailer4がすでにインストールされれいるので直ぐに使える!

<?php
try {
  $date = date('Y年m月d日');
  $format = '%s <%s>';
  $mailer = jpSimpleMail::create('SwiftMailer4');
  $mailer->setFrom(sprintf($format, '送信者', 'sample@sampledomain.com'));
  $mailer->addTo(sprintf($format, '送信先', 'to@sampledomain.com'));
  $mailer->setSubject('タイトル');
  $mailer->setBody($this->getPartial('createMail', array('date' => $date));
  $rs = $mailer->send();
} catch (jpSendMailException $e) {
  // ここにエラー対応の処理を入れる
  $this->logMessage('メール送信エラー');
}

メール本文をテンプレートファイルに記載しているので、別途同一モジュール内のtemplateディレクトリに _createMail.php で本文を作ろう。
getPartial()の第二引数に配列で値を渡せば、キーと同一名の変数で取得可能。
上記例だと_createMail.php内で$dateとすれば今日の日付が取得できる。
これできれいなコードで動的にメール本文が作れるね。

メールが送信できなければ$rsに0が代入される。
factories.ymlで送信しない設定でも何らかのエラーで送信ができなくても0らしい。
画面右上のデバッグツールにあるメールアイコンで送信内容を確認できるぞ。

下記リンクは参考サイト
ぷぎがぽぎの人は恐らく仕事で会った事ある人・・・