官方文档:http://www.yiiframework.com/doc-2.0/guide-tutorial-mailing.htmlphp
使用Yii2框架的时候,有时候须要发送电子邮件,Yiii2提供了swiftMailer扩展来实现;html
一、swiftMailergit
Swift是一个彻底采用面向对象编码用于发送e-mail的PHP函数库。Swift不依赖于PHP的mail()函数,由于用它发送多封邮件时会占用较高的服务器资源。Swift经过直接连到SMTP服务器或MTA可以更快,更高效地发送邮件。github
二、安装:swift
https://github.com/yiisoft/yii2-swiftmailer数组
这里有具体的安装方法以及使用方法:服务器
a、配置:yii2
return [ //.... 'components' => [ 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'useFileTransport' => false, 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'smtp.163.com', 'username' => '***@163.com', 'password' => '******', //这里须要注意,一些邮箱若是在第三方邮箱登陆如下等服务POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV,会要求设置登陆受权码,登陆的时候,密码是输的这个受权码,这里填写的password也相应的是这个受权码 'port' => '25', 'encryption' => 'tls', ], 'messageConfig'=>[ 'charset'=>'UTF-8', 'from'=>['***@163.com'=>'**客服'] ], ], ], ];
三、使用:app
$mail= Yii::$app->mailer->compose(); $mail->setTo('***@163.com'); //要发送的邮箱 $mail->setSubject("邮件主题"); //邮件主题 $mail->setTextBody('纯文本内容'); //发布纯文字文本 $mail->setHtmlBody("消息内容"); //发送的消息内容 $res = $mail->send();
注意:批量发送的时候,只须要在setTo防范重传入邮箱数组便可,setTo([‘mail1@mail.com’,‘mail1@mail.com’])框架
四、自定义邮件模板:
咱们在配置的时候会作一些配置,其中有一项为
'viewPath' => '@common/mail',
所以咱们能够在该目录下建立新的模版文件template.php,内容本身随便写
而后在定义的时候:
Yii::$app->mailer->compose('template',['params'=>'参数1'])
即参数传入模板文件的名称。固然也支持传入参数,即为第二个参数
五、自定义layout
为邮件定制layout,,假如layout放在common\layouts\mail下,文件为layout.php:
Yii::$app->mailer->compose('template', [ 'html' => 'layout', //key固定,value是模版文件名 'params' => '参数1' ]) ->setTo('**@163.com') ->setSubject(*****主题') ->send();
六、发送带附件的邮件:发送邮件并以附件的形式带上一张图片和一个word文档
$message = Yii::$app->mailer->compose(); $message->attach('图片可访问地址'); $message->attachContent('Attachment content', ['fileName' => 'test.word', 'contentType' => 'text/plain']); $message->setTo('***@163.com'); $message->setSubject('***主题'); $message->send();
注意:想把图片放在邮件内容,而不是附件发送,能够经过模板文件并传入参数的方法实现,可是部分邮箱仍是会将图片摘出来,以附件的形式发送