举杯邀月

Yii2 发送邮件配置及再常连接中的超时错误处理

摘要:yii2中官方为了解决邮件发送问题提供了swiftMailer扩展,只需配置下就可以了,这次在一个常连接的进程中发送邮件,发现邮件的服务链接经常超时,所以就写了这篇文章。

邮件的配置与使用

yii2中官方为了解决邮件发送问题提供了swiftMailer扩展,只需在配置文件中加上配置就可以了。

'mailer' => [
    'class' => 'yii\swiftmailer\Mailer',
    'useFileTransport' =>false,        //这句一定有,false发送邮件,true只是生成邮件在runtime文件夹下,不发邮件
    'transport' => [
    'class' => 'Swift_SmtpTransport',
    'host' => 'smtp.163.com',      //每种邮箱的host配置不一样
    'username' => '你的用户名',
    'password' => '你的密码',
    'port' => '465',
    'encryption' => 'ssl',
],
    'messageConfig'=>[
        'charset'=>'UTF-8',
        'from'=>['你的用户名'=>'提示标题信息']
    ],
],
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

使用邮箱发送邮件之前,请确保已经开启了 SMTP服务,已QQ邮箱为例,开启的配置在:

举杯邀月-技术博客
在开启SMTP服务后,生成一个授权码,填入配置文件的 password 即可。

发送邮件时使用:

\Yii::$app->mailer->compose()
    ->setTo('123@qq.com')    //接收者邮箱
    ->setSubject('邮件标题')
    ->setHtmlBody('html格式的邮件内容,支持html标签')
    ->send();
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5

接收者邮箱可以设置为 string(单个) 或者 array(批量) 类型

邮件支持 setHtmlBodysetTextBody 两种类型,可根据情况选择

setHtmlBody 是html格式的邮件内容,支持html标签

setTextBody 是纯文本邮件内容

在常连接中连接超时问题

这次使用rabbitmq中间件做的常连接,监控数据并报警,进程刚起来的时候没问题,但是过一会进程退出了,然后查看日志报了一个错误:

Expected response code 250 but got code "", with message ""
1
1
1
1
1
1
1
1
1

然后经过不断的测试、查询,最终确定应该是邮件连接的服务超时了,再常连接启动后发送第一封邮件他就进行了连接,然后不会断开,导致时间长了后服务链接超时。

最后,在发送邮件前进行了一次 ping 的操作解决了这个问题:

Yii::$app->mailer->transport->ping();
Yii::$app->mailer->compose()
    ->setTo('123@qq.com')
    ->setSubject('邮件标题')
    ->setHtmlBody('html格式的邮件内容,支持html标签')
    ->send();
1
2
3
4
5
6
1
2
3
4
5
6
1
2
3
4
5
6
1
2
3
4
5
6
1
2
3
4
5
6
1
2
3
4
5
6
1
2
3
4
5
6
1
2
3
4
5
6
1
2
3
4
5
6

作者:举杯邀月

出处: http://www.hug-code.cn/archives/5fd9bbff13a93.html

2020-10-16 标签: yii2