stevad/yiimailer

此包的最新版本(1.2)没有可用的许可信息。

使用PHPMailer发送带布局的电子邮件的Yii扩展

1.2 2017-08-30 11:23 UTC

This package is auto-updated.

Last update: 2024-09-15 22:57:27 UTC


README

使用PHPMailer发送带布局的电子邮件的Yii扩展

功能

  • 基于最新的PHPMailer(5.2.x分支)
  • 支持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控制台应用。