首頁  >  文章  >  後端開發  >  yii2 發送郵件功能

yii2 發送郵件功能

不言
不言原創
2018-04-19 14:45:132417瀏覽

這篇文章介紹的內容是關於yii2 發送郵件功能,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

首先要實現郵件功能,我們需要了解yii2有郵件類別的概念

yii2 為了解決我們郵件發送問題,為我們提供了swiftMailer擴充功能。

那麼什麼是swiftMailer呢?

Swift是一個完全採用物件導向編碼用來傳送e-mail的PHP函數函式庫。 Swift不依賴PHP的mail()函數,因為用它傳送多封郵件時會佔用較高的伺服器資源。 Swift透過直接連接到SMTP伺服器或MTA能夠更快,更有效率地傳送郵件。

設定環境
  1. 首先在我們的main.php中設定我們的mailer元件

//主要是对组件中各种必要的发送邮箱的属性进行配置'mailer' => [                'class' => 'yii\swiftmailer\Mailer',                'viewPath' => '@common/mail',                'useFileTransport' =>false,//这句一定有,false发送邮件,true只是生成邮件在runtime文件夹下,不发邮件
                'transport' => [                    'class' => 'Swift_SmtpTransport',                    'host' => 'smtp.qq.com',  //每种邮箱的host配置不一样
                    'username' => '11150****1@qq.com',                    'password' => '*****',//密码不是指的登录密码
                    'port' => '465',                    'encryption' => 'ssl',
                ],
            ],
  1. 在控制器或模型中呼叫該元件。

$mailer = \Yii::$app->mailer->compose('seekpass',['html'=>'html','adminuser'=>$post['Admin']['adminuser'],'token'=>$_SERVER['HTTP_HOST'].Url::toRoute(['manage/emailchangepass'])."&timestamp=".$time."&token=".$token."&adminuser=".$adminuser]);            $mailer ->setFrom("1115007981@qq.com")//设置发件人,虽然写了一遍但还是要写
                    ->setTo("1115007981@qq.com")//设置收件人
                    ->setSubject("黑势力科技")//摘要
                    ->send();                    //如发送成功,则返回一个bool类型的值

在這裡我們需要講幾個方法。
1、mailer元件中的compose()方法

compose($view = null, array $params = [])
$view 值得是需要載入的郵件模板,預設在common/Mailer裡(由設定mailer裡的viewPath屬性決定)

$params 裡面可以放置我們需要載入到模板裡的各種參數,例如我們上面的'token','adminuser '等參數值。 值得一提的是 當數值的鍵為htmltext時分別代表載入我們的html區塊模板和text區塊模板。

  1. 在view中建立我們的郵件範本

#我們打開我們的common/views/mail/layout,我們可以看到mailer元件已經為我們寫

好了基礎的模板,所以我們只需要寫一些簡單的html程式碼,再去呼叫layout即可

我們在mail資料夾中寫上我們想傳送檔案的html格式

//例如:<P>尊敬的管理员<?=$adminuser;?></P><p> 你好</p><p>你的重置密码连接为:</p><a href="http://<?=$token?>">http://<?=$token?></a><p>请在5分钟之内重置密码,否则密码想会失效</p>  //token 为我们在compose中传入的值

這就是我們傳送yii2中傳送郵件的功能

首先要實作郵件功能,我們需要了解yii2有郵件類別的概念

yii2為了解決我們郵件發送問題,為我們提供了swiftMailer擴充功能。

那麼什麼是swiftMailer呢?

Swift是一個完全採用物件導向編碼用來傳送e-mail的PHP函數函式庫。 Swift不依賴PHP的mail()函數,因為用它傳送多封郵件時會佔用較高的伺服器資源。 Swift透過直接連接到SMTP伺服器或MTA能夠更快,更有效率地傳送郵件。

設定環境
  1. 首先在我們的main.php中設定我們的mailer元件

//主要是对组件中各种必要的发送邮箱的属性进行配置&#39;mailer&#39; => [                &#39;class&#39; => &#39;yii\swiftmailer\Mailer&#39;,                &#39;viewPath&#39; => &#39;@common/mail&#39;,                &#39;useFileTransport&#39; =>false,//这句一定有,false发送邮件,true只是生成邮件在runtime文件夹下,不发邮件
                &#39;transport&#39; => [                    &#39;class&#39; => &#39;Swift_SmtpTransport&#39;,                    &#39;host&#39; => &#39;smtp.qq.com&#39;,  //每种邮箱的host配置不一样
                    &#39;username&#39; => &#39;11150****1@qq.com&#39;,                    &#39;password&#39; => &#39;*****&#39;,//密码不是指的登录密码
                    &#39;port&#39; => &#39;465&#39;,                    &#39;encryption&#39; => &#39;ssl&#39;,
                ],
            ],
  1. 在控制器或模型中呼叫該元件。

$mailer = \Yii::$app->mailer->compose(&#39;seekpass&#39;,[&#39;html&#39;=>&#39;html&#39;,&#39;adminuser&#39;=>$post[&#39;Admin&#39;][&#39;adminuser&#39;],&#39;token&#39;=>$_SERVER[&#39;HTTP_HOST&#39;].Url::toRoute([&#39;manage/emailchangepass&#39;])."&timestamp=".$time."&token=".$token."&adminuser=".$adminuser]);            $mailer ->setFrom("1115007981@qq.com")//设置发件人,虽然写了一遍但还是要写
                    ->setTo("1115007981@qq.com")//设置收件人
                    ->setSubject("黑势力科技")//摘要
                    ->send();                    //如发送成功,则返回一个bool类型的值

在這裡我們需要講幾個方法。
1、mailer元件中的compose()方法

compose($view = null, array $params = [])
$view 值得是需要載入的郵件模板,預設在common/Mailer裡(由設定mailer裡的viewPath屬性決定)

$params 裡面可以放置我們需要載入到模板裡的各種參數,例如我們上面的'token','adminuser '等參數值。 值得一提的是 當數值的鍵為htmltext時分別代表載入我們的html區塊模板和text區塊模板。

  1. 在view中建立我們的郵件範本

#我們打開我們的common/views/mail/layout,我們可以看到mailer元件已經為我們寫

好了基礎的模板,所以我們只需要寫一些簡單的html程式碼,再去呼叫layout即可

我們在mail資料夾中寫上我們想傳送文件的html格式

//例如:<P>尊敬的管理员<?=$adminuser;?></P><p> 你好</p><p>你的重置密码连接为:</p><a href="http://<?=$token?>">http://<?=$token?></a><p>请在5分钟之内重置密码,否则密码想会失效</p>  //token 为我们在compose中传入的值

這就是我們發送yii2中發送郵件的功能

#相關推薦:

##Yii2 基於郵箱驗證的忘記密碼操作

yii2 resetful 的授權驗證

以上是yii2 發送郵件功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn