rdewilde/yiimailer

该包最新版本(1.0.0)没有可用的许可证信息。

基于PHPMailer发送带有布局的电子邮件的Yii扩展

1.0.0 2014-02-17 12:35 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:27:12 UTC


README

基于PHPMailer(版本5.2.6捆绑)发送带有布局的电子邮件的Yii扩展

功能

  • 基于最新的PHPMailer(版本5.2.6捆绑)
  • 支持Yii布局和翻译
  • 支持Web和控制台应用程序
  • 发送包含嵌入式图像的完整HTML电子邮件
  • 像在Yii中通常做的那样与视图一起工作
  • 使用测试模式保存电子邮件而不是发送它们(当你没有本地安装邮件服务器时很有用)

安装

  1. 将YiiMailer文件夹复制到protected/extensions
  2. 将'ext.YiiMailer.YiiMailer'行添加到主和/或控制台yii配置中的导入中
  3. 将mail.php配置文件复制到protected/config或添加在'params'下以'YiiMailer'为键的配置数组
  4. 在protected/views/layouts/中创建email布局文件mail.php(默认路径,可以在配置中更改)
  5. 在protected/views/mail/中创建你想要使用的所有视图(默认路径,可以在配置中更改)
  6. 将你想要嵌入电子邮件中的所有图像放入images/mail/中(默认路径,可以在配置中更改)

用法

在你的控制器或控制台命令中实例化YiiMailer并传递视图和数据数组

$mail = new YiiMailer('contact', array('message' => 'Message to send', 'name' => 'John Doe', 'description' => 'Contact form'));

$mail = new YiiMailer();
$mail->setView('contact');
$mail->setData(array('message' => 'Message to send', 'name' => 'John Doe', 'description' => 'Contact form'));

布局自动从配置中设置,但你也可以用以下方式覆盖它

$mail->setLayout('layoutName');

设置属性

$mail->setFrom('from@example.com', 'John Doe');
$mail->setTo(Yii::app()->params['adminEmail']);
$mail->setSubject('Mail subject');

你可以使用所有你通常使用的PHPMailer属性。

最后,发送电子邮件

if ($mail->send()) {
	Yii::app()->user->setFlash('contact','Thank you for contacting us. We will respond to you as soon as possible.');
} else {
	Yii::app()->user->setFlash('error','Error while sending email: '.$mail->getError());
}

发送简单消息

你可以通过使用以下方式发送电子邮件而不使用布局和视图

$mail = new YiiMailer();
//$mail->clearLayout();//if layout is already set in config
$mail->setFrom('from@example.com', 'John Doe');
$mail->setTo(Yii::app()->params['adminEmail']);
$mail->setSubject('Mail subject');
$mail->setBody('Simple message');
$mail->send();

或者,你也可以发送带有布局但未指定视图的电子邮件消息(设置布局并设置正文)或带有视图但未设置布局的电子邮件(清除布局并设置视图)。

设置地址

当使用设置地址的方法(setTo(), setCc(), setBcc(), setReplyTo())时,以下任何一项对于参数都是有效的

$mail->setTo('john@example.com');
$mail->setTo(array('john@example.com','jane@example.com'));
$mail->setTo(array('john@example.com'=>'John Doe','jane@example.com'));

发送附件

你可以使用setAttachemnt()方法发送一个或多个附件

$mail->setAttachment('something.pdf');
$mail->setAttachment(array('something.pdf','something_else.pdf','another.doc'));
$mail->setAttachment(array('something.pdf'=>'Some file','something_else.pdf'=>'Another file'));

测试模式

当在没有安装邮件服务器的情况下本地工作,将电子邮件保存为文件而不是尝试发送它们并在这个过程中获得错误可能很有用。要使用测试模式,你必须指定你想要保存电子邮件的目录的路径,并在你的配置中将'testMode'属性设置为'true'

	'savePath' => 'webroot.assets.mail',
	'testMode' => true,

电子邮件以.eمل文件保存,你可以使用像Mozilla Thunderbird这样的软件来打开它们。

示例

包含两个示例:一个是yii Web应用中的标准联系表单,另一个是yii控制台应用。