Yii2.0封裝的類足夠強(qiáng)大,Mailer的使用方法做一個(gè)總結(jié):
1、先在main-local.php中做好配置:
創(chuàng)新互聯(lián)一直通過網(wǎng)站建設(shè)和網(wǎng)站營銷幫助企業(yè)獲得更多客戶資源。 以"深度挖掘,量身打造,注重實(shí)效"的一站式服務(wù),以網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、移動(dòng)互聯(lián)產(chǎn)品、成都全網(wǎng)營銷推廣服務(wù)為核心業(yè)務(wù)。十多年網(wǎng)站制作的經(jīng)驗(yàn),使用新網(wǎng)站建設(shè)技術(shù),全新開發(fā)出的標(biāo)準(zhǔn)網(wǎng)站,不但價(jià)格便宜而且實(shí)用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡單易用,維護(hù)方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設(shè)的選擇。
return [
//....
'components' => [
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
],
],
];
詳細(xì)如下:
return [
//....
'components' => [
'viewPath' => '@common/mail',
'useFileTransport' =>false,//這句一定有,false發(fā)送郵件,true只是生成郵件在runtime文件夾下,不發(fā)郵件
'transport' => [
'class' =>'Swift_SmtpTransport', //使用的類
'host' => 'smtp.sina.com', //郵箱服務(wù)一地址這里用的sina郵件 'wwwww@sina.com',//郵箱地址,發(fā)送的郵箱
'password' => '***', //自己填寫郵箱密碼
'port' => '465', //服務(wù)器端口
'encryption' => 'ssl', //加密方式
],
'messageConfig'=>[
'charset'=>'UTF-8', //編碼
'from'=>['wwwww@sina.com'=>'管理員'] //郵件里面顯示的郵件地址和名稱
],
],
];
2、在應(yīng)用中的對(duì)應(yīng)的方法中使用:
Yii::$app->mailer->compose()->setFrom('from@domain.com')->setTo('to@domain.com')->setSubject('Message subject')->setTextBody('Plain text content')->setHtmlBody('HTML content')->send();
3、關(guān)于在上面的例子中所述的 compose() 方法創(chuàng)建了電子郵件消息,這是填充和發(fā)送的一個(gè)實(shí)例,發(fā)送內(nèi)容在setTextBody中傳輸。 如果需要的話在這個(gè)過程中你可以用上更復(fù)雜的邏輯:
$message = Yii::$app->mailer->compose();
if (Yii::$app->user->isGuest) {$message->setFrom('from@domain.com')
} else { $message->setFrom(Yii::$app->user->identity->email)}
$message->setTo(Yii::$app->params['adminEmail'])
->setSubject('Message subject')
->setTextBody('Plain text content')
->send();
4、郵件發(fā)出去的內(nèi)容,除了通過setTextBody中傳輸。在Yii 允許通過特殊的視圖文件來撰寫實(shí)際的郵件內(nèi)容。默認(rèn)情況下, 這些文件應(yīng)該位于 “@app/mail” 路徑的文件中,代碼如下:
passwordResetToken-html.php
use yii\helpers\Html;
/ @var $this yii\web\View /
/ @var $user common\models\User /$resetLink = Yii::$app->urlManager->createAbsoluteUrl(['site/reset-password', 'token' => $user->password_reset_token]);
?>Hello = Html::encode($user->username) ?>,
Follow the link below to reset your password:
= Html::a(Html::encode($resetLink), $resetLink) ?>
調(diào)用的時(shí)候代碼如下(html指向上述目錄中的對(duì)應(yīng)html視圖文件):
Yii::$app
->mailer
->compose(
['html' => 'passwordResetToken-html', 'text' => 'passwordResetToken-text'],
['user' => $user]
)
->setFrom([Yii::$app->params['supportEmail'] => Yii::$app->name . '管理員'])
->setTo($this->email)
->setSubject('密碼重置' . Yii::$app->name)
->send();