Author: | Shogo Kawahara <Twitter: @ooharabucyou> |
---|---|
Date: | 2010-12-18 |
単純にメールを送信する機能としては、 opMailSend::execute() を利用する方法があります。
opMailSend::execute('Subject', 'to@sns.example.com', opConfig::get('admin_mail_address'), 'Body');
opMailSend::execute() は至ってシンプルです。
SNS上から送られる通知メールの多くは、ある程度の定型文をもったもので、 かつSNS管理者がその内容を編集できる方が望ましいことが多くあります。
OpenPNE3では、プラグインからテンプレートを作成して、 送信の際に利用することができます。
テンプレートは $your_plugin_dir/config/mail_template.yml で定義を行います。
テンプレートの Subject および 本文は Twig の書式で記述します。
Note
Twig
基本的なルール
詳しくは以下を確認してください。
$your_plugin_dir/config/mail_template.yml
pc: # PC向け
hello: # テンプレート名
caption: "ハローメール" # 管理画面で表示されるテンプレート名
configurable: true # true にすると管理画面から送受信設定を行うことができる
title_configurable: true # true にすると Subject を変更できます。
sample: # デフォルトテンテンプレート
ja_JP: # 日本語
- "こんにちは" # デフォルトのSubject
- | # 本文
{{ name }} さんこんにちは!あいさつのメールです
variables:
name: "受信者のニックネーム" # 管理画面で表示される変数の説明
mobile: # モバイル向け 以下 PC向けと同様
hello:
caption: "ハローメール"
configurable: true
title_configurable: true
sample:
ja_JP:
- "こんにちは"
- |
{{ name }} さんこんにちは!あいさつのメールです
variables:
name: "受信者のニックネーム"
設定ファイルを設置したら、キャッシュを削除しましょう。
$ cd $openpne_dir
$ php symfony cc
この設定により、テンプレートの内容を管理画面の「メール設定」 -> 「メール通知テンプレート設定」 からテンプレートを編集することができます。
// member_id=1 のMember インスタンスを作成
$member = Doctrine::getTable('Member')->find(1);
// メールアドレスを取得 (配列)
foreach ($member->getEmailAddresses() as $to)
{
// 送信
opMailSend::sendTemplateMail('hello', $to, opConfig::get('admin_mail_address'), array('name' => $member->getName()));
}
opMailSend::sendTemplateMail() は以下のように使います。
送信先メールアドレスがモバイル向けの場合、モバイル向けのテンプレートを送ります。
明日は、メールの受信について取り扱います。