前言
本文主要介绍的是关于解决Yii2邮件发送返回成功但接收不到邮件问题的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:
刚刚用了一下yii邮件发送功能,虽然结果返回成功,但接收不到邮件。
配置文件代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
'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' , ], ], ], |
控制器代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
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, ]; } } |
但是你会发现数据返回是成功的但是你却没收到邮件
解决方法:
这是你应该把
'useFileTransport' => true
改成 'useFileTransport' => false
,
并且你的邮箱密码是qq授权码(到你邮箱中的设置->账户 查看)
通过以上努力你会成功接收邮件!
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。