邮件 - 基本使用

  • 作者:KK

  • 发表日期:2016.9.7


Yii2的邮件底层是集成了swiftmailer来实现的,Yii2框架自身并不负责具体的发邮件处理

对于Yii2的开发者来说,统一用mailer组件来处理,并且只要咱们能实现邮件接口的话,自定义一个邮件底层的实现yii\mail\BaseMailer类也可以

好了进入主题

配置

配置mailer组件

'components' => [
	//省略其它组件。。。
	'mailer' => [
		'class' => 'yii\swiftmailer\Mailer',
		'transport' => [
			'class' => 'Swift_SmtpTransport',
			'host' => 'SMTP服务器的主机',
			'username' => 'SMTP服务器账号',
			'password' => 'SMTP服务器密码',
			'port' => '25', //SMTP服务器端口
		],
		'messageConfig' => [
			'charset' => 'UTF-8', //邮件的默认编码
			'from' => [
				'xxx@yy.com' => '小明', //邮件上显示的 来自 和 发信人名称
			],
		],
	],
]

调用代码

$email = Yii::$app->mailer->compose();	//创建一封新邮件
$email->setTo('接收者的邮箱地址');	//设置发送目标
$email->setSubject('学习Yii发邮件用的');	//设置邮件标题
$email->setHtmlBody('<div style="color:red">fffffff</div>');	//设置邮件主体内容
Yii::$app->mailer->send($email); //发送这封邮件

批量发送

$emailList = [];
foreach($userList as $user){
	$email = Yii::$app->mailer->compose();	//创建一封新邮件
	$email->setTo($user->email);	//设置发送目标
	$email->setSubject('推广邮件');	//设置邮件标题
	$email->setHtmlBody('<div style="color:red">本商城明天有上万件商品参与秒杀哦!</div>');	//设置邮件主体内容
	$emailList[] = $email;
}
Yii::$app->mailer->sendMultiple($emailList);	//不要在for循环里一个个去send,用这个方法批量发送会比较好