這篇文章介紹的內容是關於yii2 發送郵件功能,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
首先要實現郵件功能,我們需要了解yii2有郵件類別的概念
yii2 為了解決我們郵件發送問題,為我們提供了swiftMailer擴充功能。
那麼什麼是swiftMailer呢?
Swift是一個完全採用物件導向編碼用來傳送e-mail的PHP函數函式庫。 Swift不依賴PHP的mail()函數,因為用它傳送多封郵件時會佔用較高的伺服器資源。 Swift透過直接連接到SMTP伺服器或MTA能夠更快,更有效率地傳送郵件。
首先在我們的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', ], ],
在控制器或模型中呼叫該元件。
$mailer = \Yii::$app->mailer->compose('seekpass',['html'=>'html','adminuser'=>$post['Admin']['adminuser'],'token'=>$_SERVER['HTTP_HOST'].Url::toRoute(['manage/emailchangepass'])."×tamp=".$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 '等參數值。 值得一提的是 當數值的鍵為html
和text
時分別代表載入我們的html區塊模板和text區塊模板。
在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能夠更快,更有效率地傳送郵件。
首先在我們的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', ], ],
在控制器或模型中呼叫該元件。
$mailer = \Yii::$app->mailer->compose('seekpass',['html'=>'html','adminuser'=>$post['Admin']['adminuser'],'token'=>$_SERVER['HTTP_HOST'].Url::toRoute(['manage/emailchangepass'])."×tamp=".$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 '等參數值。 值得一提的是 當數值的鍵為html
和text
時分別代表載入我們的html區塊模板和text區塊模板。
在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 發送郵件功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!