2009年7月30日木曜日

 

【symfony】日本語メールを送信するためプラグイン - jpSimpleMailPlugin(※追記:2009/08/01)

どの方法が標準的なのか判らなかったので、日本人が日本語メール送れるように「jpMailPlugin」を踏まえて開発されたプラグイン「jpSimpleMailPlugin」を選択。

ソース

jpSimpleMailPlugin - openpear

インストール

/* インストール・コマンド */
$ ./symfony plugin:add-channel openpear.org // channel 登録
>> plugin    add channel "openpear.org"
$ ./symfony plugin:install --force-license --release=0.1.1 openpear.org/jpSimpleMailPlugin
>> plugin    installing plugin "openpear.org/jpSimpleMailPlugin"

問題なくインストールできた。

※追記:2009/08/01

symfony」コマンドでは取得できなかったので「svn」で取得。

jpSimpleMailPluginで簡単Eメール送信の巻 - tic-toc.info

「plugins/」ディレクトリで以下実行。

$ svn co http://svn.openpear.org/jpSimpleMailPlugin/tags/0.1.1-beta jpSimpleMailPlugin

symfony1.2では「sfMail」というクラスが無くなり、「PHPMail」がデフォルトで使えない上に、「setting.yml」に「compat_10: on」にしないとActionから「sendEmail()」が使えない様なので()、この際「Qdmail」を使ってみる。

Qdmail - さぼてん:2009年8月3日

とりあえず呼び出すActionファイルと同じ「actions/」に置いてインクルード。

/* apps/frontend/modules/sendmail/actions/actions.class.php */

include('qdmail.php');
public function executeIndex(sfWebRequest $request) {
  try {
    $mailer = jpSimpleMail::create('Qdmail');

    $mailer->setSubject('メール送信テストです');
    $mailer->setSender('master@example.com');
    $mailer->addTo(sprintf('%s <%s>', 'シンフォニー 太郎', 'symfony@example.com'));
    $mailer->setFrom(sprintf('%s <%s>', '管理者', 'master@example.com'));
    // getComponentでsendmailモジュールのcreateMailBodyコンポーネントに値(name)を渡しつつ処理結果をsetBodyする
    $mailer->setBody($this->getComponent('sendmail', 'createMailBody', array('name' => 'なまえ')));
    $rs = $mailer->send();
  } catch (jpSendMailException $e) {
    // エラーの場合の処理
  }
}

コンポーネント。「actions/」ディレクトリに作成。

/* apps/frontend/modules/sendmail/actions/components.class.php */

<?php class sendmailComponents extends sfComponents {
  public function executeCreateMailBody($request) {
    // ここで本文を作成するのに必要なロジックをコーディングする
    $this->url = "http://www.example.com/";
  }
}

メール本文のテンプレート。

/* apps/frontend/modules/sendmail/templates/_createMailBody.php */
<?php echo $name ?>
 ------------------
 テストです。
 どうでしょうか?
<?php echo $url ?>
 -----

「qdmail.php」はどこに配置するのが良いのか。
コンポーネントにはどんな処理を担当させれば良いのか。

参考

jpSimpleMailPlugin - おやぢ組

関連

メールを送るとなぜかOutlook系のメーラーでサブジェクトが文字化ける件 - 30歳の遺書
jpSimpleMailPluginというプラグイン~(中略)~早速インストールしてみたんだけど、まだ文字化けが続く。
メールのヘッダを見ると、どうやらエンコーディングを二回やってしまっているらしい。
メール送信 - さぼてん(2009/07/27)

ラベル:


コメント: コメントを投稿

登録 コメントの投稿 [Atom]



この投稿へのリンク:

リンクを作成



<< ホーム

This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google