動態

詳情 返回 返回

Yii實現郵件發送 - 動態 詳情

一:yiisoft/yii2-swiftmailer拓展安裝

composer require yiisoft/yii2-swiftmailer

github地址:https://github.com/yiisoft/yii2-swiftmailer

文檔地址:https://www.yiichina.com/doc/guide/2.0/tutorial-mailing

二:開啓郵箱IMAP/STMP服務

這裏以QQ郵箱為例:

1:賬號設置

登錄QQ郵箱後點擊首頁的設置按鈕

1.png

進入賬户設置

2.png

2:開啓IMAP/SMTP服務

開啓IMAP/SMTP服務

3.png

記錄開啓服務器的授權碼

4.png

QQ郵件開啓服務後相關説明

image.png

三:郵件發送功能實現

1:郵件發送基礎配置

在配置文件main.php 中的components參數下配置:

'mailer' => [
    'class' => 'yii\swiftmailer\Mailer',
    'useFileTransport' => false,//false發送郵件,true只是在runtime文件夾下生成郵件文件,不發郵件
],

2:郵件發送常見方法

(1):發送郵件服務器配置

Yii::$app->mailer->transport = [
    'class' => 'Swift_SmtpTransport',
    'host' => 'smtp.qq.com',//發送郵件host,每種郵箱的host配置不一樣
    'username' => 'xxx',//發送郵件賬號
    'password' => 'XXX',//發送郵件授權碼
    'port' => '465',//發送郵件端口 
    'encryption' => 'ssl',//加密方式
];

(2):設置發件人

Yii::$app->mailer->compose()->setFrom('XXX');

(3):設置收件人

Yii::$app->mailer->compose()->setTo('XXX');

(4):設置郵件主題

Yii::$app->mailer->compose()->setSubject('XXX');

(5):設置發送郵件內容

純文本內容

Yii::$app->mailer->compose()->setTextBody('XXX');

html內容

Yii::$app->mailer->compose()->setHtmlBody('<div>XXX</div>');

(6):設置發送附件

Yii::$app->mailer->compose()->attach('XXX.pdf');

(7):郵件發送

Yii::$app->mailer->compose()->send();

3:郵件發送實例

Yii::$app->mailer->transport = [
    'class' => 'Swift_SmtpTransport',
    'host' => 'smtp.qq.com',//發送郵件host,每種郵箱的host配置不一樣
    'username' => 'xxx',//發送郵件賬號
    'password' => 'XXX',//發送郵件授權碼
    'port' => '465',//發送郵件端口 
    'encryption' => 'ssl',//加密方式
];

try {
    $result = Yii::$app->mailer->compose()
        ->setFrom('XXX')//設置發件人
        ->setTo('XXX')//設置收件人
        ->setSubject('XXX')//設置主題
        ->setHtmlBody('<div>XXX</div>')//設置郵件內容
        ->attach('XXX.pdf')//設置郵件附件
        ->send();
} catch (\Swift_TransportException $e) {
    $result = false;
}
user avatar chunzhendegaoshan 頭像 bytebase 頭像 liu_486 頭像 yuelianggeimengnalisha 頭像 _61e9689d548cc 頭像 8848_62c77d4bb2532 頭像
點贊 6 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.