在Yii中存储电子邮件模板的最佳方法

时间:2015-02-01 15:07:46

标签: php yii email-templates

我现在正在实现一项功能,允许向在我的Yii 1.1项目中注册的用户发送系统电子邮件。

我是一名初学者,所以我有时需要提示,所以我有一些关于存储和检索电子邮件模板文件的实现的简单问题,这些文件将在发送系统消息时使用(例如,使用swiftMailer)。

  1. Yii应用程序的哪个文件夹最适合存储系统消息的HTML电子邮件模板?
  2. 我的"电子邮件模板"模型扩展,因为电子邮件模板将存储为文件,模型不会与数据库交互。
  3. 这种方法(单独的"电子邮件模板"模型+存储系统上的电子邮件模板文件)是否适用于此类事情?
  4. 提前致谢。如果有人可以推荐不同的做法,那也将非常感激。

1 个答案:

答案 0 :(得分:0)

电子邮件与其他类型的视图不同,只是它们的传递机制不同。这里是Yii期望您的模板的地方:

yii/
-- protected/
   -- views/
      -- mail/
         -- template.html

您可以在Yii中为电子邮件指定模板。请参阅YiiMailMessage->setBody的文档:

/**
* Set the body of this entity, either as a string, or array of view 
* variables if a view is set, or as an instance of 
* {@link Swift_OutputByteStream}.
* 
* @param mixed the body of the message.  If a $this->view is set and this 
* is a string, this is passed to the view as $body.  If $this->view is set 
* and this is an array, the array values are passed to the view like in the 
* controller render() method
* @param string content type optional. For html, set to 'html/text'
* @param string charset optional
*/

示例:

$message = new YiiMailMessage;
$message->view = 'main_tpl';
$message->setBody(array(
    'data' => $data,
    'user' => $user,
));
$message->subject = $subject;
$message->addTo($email);
$message->from = $from;
Yii::app()->mail->send($message);

这会使用yii/protected/views/mail/main_tpl.php模板准备一条消息,然后将其与$data$user一起发送,以填充缺失的部分。