Heim > PHP-Framework > DAS > Hauptteil

解决yii2发送邮件无法接收的问题

藏色散人
Freigeben: 2020-07-21 11:54:06
Original
3121 人浏览过

yii2发送邮件无法接收的解决办法:首先找到并打开配置文件代码;然后将代码“'useFileTransport' => true”改成“'useFileTransport' => false,”;最后保存修改即可。

解决yii2发送邮件无法接收的问题

解决Yii2邮件发送问题(结果返回成功,但接收不到邮件)

刚刚用了一下yii邮件发送功能,虽然结果返回成功,但接收不到邮件。配置文件代码如下:

推荐:《yii教程

'components' => [
    'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=yiidemo',
        'username' => 'root',
        'password' => 'root',
        'charset' => 'utf8',
    ],
    'mailer' => [
        'class' => 'yii\swiftmailer\Mailer',
        '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',
        ],
    ],
],
Nach dem Login kopieren

控制器代码:

public $modelClass = 'common\models\User';
 
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,
        ];
    }
}
Nach dem Login kopieren

但是你会发现数据返回是成功的但是你却没收到邮件

这是你应该把

'useFileTransport' => true 改成 'useFileTransport' => false,
Nach dem Login kopieren

并且你的邮箱密码是qq授权码(到你邮箱中的设置->账户 查看)

通过以上努力你会成功接收邮件!

以上是解决yii2发送邮件无法接收的问题的详细内容。更多信息请关注PHP中文网其他相关文章!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!