解決yii2發送郵件無法接收的問題

YII2發送郵件無法接收的解決辦法:首先找到并打開配置文件代碼;然后將代碼“’useFileTransport’ => true”改成“’useFileTransport’ => false,”;最后保存修改即可。

解決yii2發送郵件無法接收的問題

解決Yii2郵件發送問題(結果返回成功,但接收不到郵件)

剛剛用了一下yii郵件發送功能,雖然結果返回成功,但接收不到郵件。配置文件代碼如下:

推薦:《yii教程

'components'?=>?[ ????'db'?=>?[ ????????'class'?=>?'yiidbConnection', ????????'dsn'?=>?'mysql:host=localhost;dbname=yiidemo', ????????'username'?=>?'root', ????????'password'?=>?'root', ????????'charset'?=>?'utf8', ????], ????'mailer'?=>?[ ????????'class'?=>?'yiiswiftmailerMailer', ????????'viewPath'?=>?'@common/mail', ????????//?send?all?mails?to?a?file?by?default.?You?have?to?set ????????//?'useFileTransport'?to?false?and?configure?a?transport ????????//?for?the?mailer?to?send?real?emails. ????????'useFileTransport'?=>?true, ????????'transport'?=>?[ ????????????'class'?=>?'Swift_SmtpTransport', ????????????'host'?=>?'smtp.qq.com', ????????????'username'?=>?'********@qq.com', ????????????'password'?=>?'********', ????????????'port'?=>?'465', ????????????'encryption'?=>?'ssl', ????????], ????], ],

控制器代碼:

public?$modelClass?=?'commonmodelsUser'; ? public?function?actions() { ????$actions?=?parent::actions(); ? ????//?禁用"create"?操作后可用自己在控制器中寫的方法 ????unset($actions['update'],$actions['create'],$actions['delete']); ????? ????//$actions['index']['prepareDataProvider']?=?[$this,?'prepareDataProvider']; ????return?$actions; } ? ? ? public?function?actionCreate(){ ? ????$request?=?Yii::$app->request; ????$params?=?$request->post(); ????if($params){ ????????? ????????$fromName?=?$request->getBodyParam('fromName'); ????????$fromBady?=?$request->getBodyParam('fromBady'); ????????$toName?=?$request->getBodyParam('toName'); ????????$body?=?$request->getBodyParam('body'); ????????return?$this->send($fromName,$fromBady,$toName,$body); ????????? ????} ????? ????return?false; ? } ? /* ?*?Email?Send?function ?*?@param1?$fromName ?*?@param1?$toName ?*?@param1?$body ?*?$return?boo1ean ?* ?*/ ? public?function?send($fromName,$fromBady,$toName,$body?=?''){ ????? ????$mail?=?Yii::$app->mailer->compose() ????????->setFrom([$fromName=>$fromBady]) ????????->setTo($toName) ????????->setSubject('郵件發送配置') ????????->setTextBody($body)???//發布純文字文本 ????????->send(); ????if($mail){ ????????return?[ ????????????'name'?=>?[ ????????????????'fromName'?=>?$fromName, ????????????????'fromBady'?=>?$fromBady, ????????????????'toName'?=>?$toName, ????????????????'body'?=>?$body, ????????????], ????????????'message'?=>?'發生到['.$toName.']的郵件成功!', ????????????'code'?=>?0, ????????????'status'?=>?200, ????????]; ????}else{ ????????return?[ ????????????'name'?=>?'Error', ????????????'message'?=>?'發生到'.$toName.'的郵件失敗!', ????????????'code'?=>?0, ????????????'status'?=>?402, ????????]; ????} }

但是你會發現數據返回是成功的但是你卻沒收到郵件

這是你應該把

'useFileTransport'?=>?true?改成?'useFileTransport'?=>?false,

并且你的郵箱密碼是qq授權碼(到你郵箱中的設置->賬戶 查看)

通過以上努力你會成功接收郵件!

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享