官方文檔: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();
注意:想把圖片放在郵件內容,而不是附件發送,能夠經過模板文件並傳入參數的方法實現,可是部分郵箱仍是會將圖片摘出來,以附件的形式發送