前言
本文主要介绍的是关于解决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授权码(到你邮箱中的设置->账户 查看)
通过以上努力你会成功接收邮件!
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助
jsp复习资料汇总
[JSP]2017年1月24日asp教程编程辅导汇总
[ASP]2016年12月2日JSP快速入门教程汇总
[JSP]2016年12月2日jsp基本用法和命令汇总
[JSP]2016年10月3日ASP编码教程:如何实现/使用缓存
[ASP]2015年4月15日