系统运行时异常邮件报警ThinkPHP

某业务系统开发完成后运行正常,但是由于业务访问较大系统有小概率发生异常。而因为线上的业务不能停给系统运维带来较大困难,为解决此问题经过多个方案最后决定使用邮件来实时监测异常。

系统业务异常页面

  • 由于业务需要系统隐藏了调试信息,系统有异常就跳转到统一的页面

系统运行时异常

解决方案

引用ThinkPHP 邮件插件

1
TP5的Extend文件夹下引入phpmailer,包含:class.smtp.php 和 phpmailer.php

TP5异常处理类增加邮件功能

Handlel类的内部增加邮件发送功能

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
namespace think\exception;
use phpmailer\phpmailer;

/*
* 邮件发送
* */
public function sendMail($msg,$toemail){
$sendmail = 'yang.xxx@qq.com'; //发件人邮箱
$sendmailpswd = "ahiuhiuhihi"; //客户端授权密码,而不是邮箱的登录密码!
$send_name = 'xxx';// 设置发件人信息,如邮件格式说明中的发件人,
$toemail = $toemail;//定义收件人的邮箱
$to_name = 'Other';//设置收件人信息,如邮件格式说明中的收件人
$mail = new PHPMailer();
$mail->isSMTP();// 使用SMTP服务
$mail->CharSet = "utf8";// 编码格式为utf8,不设置编码的话,中文会出现乱码
$mail->Host = "smtp.qq.com";// 发送方的SMTP服务器地址
$mail->SMTPAuth = true;// 是否使用身份验证
$mail->Username = $sendmail;//// 发送方的
$mail->Password = $sendmailpswd;//客户端授权密码,而不是邮箱的登录密码!
$mail->SMTPSecure = "ssl";// 使用ssl协议方式
$mail->Port = 465;// qq端口465或587)
$mail->setFrom($sendmail,$send_name);// 设置发件人信息,如邮件格式说明中的发件人,
$mail->addAddress($toemail,$to_name);// 设置收件人信息,如邮件格式说明中的收件人,
$mail->addReplyTo($sendmail,$send_name);// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱
$mail->Subject = "微信售票服务代码级别异常状态报告!";// 邮件标题
$mail->Body = $msg;// 邮件正文
//$mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用
if(!$mail->send()){// 发送邮件
//echo "Message could not be sent.";
//echo "Mailer Error: ".$mail->ErrorInfo;// 输出错误信息
}else{
//echo '发送成功';
}
}

使用邮件发送功能

1
2
3
4
5
6
7
8
$emailLst // 需要发送给谁的邮箱集合
$userAgent = ";2.访问客户端信息:".json_encode($info,JSON_UNESCAPED_UNICODE);
$msg = "售票系统代码级别异常报告(DEBUG->false)=>"." 1.报警日期:".$nowT_.$userAgent.";3.内容:".json_encode($data,JSON_UNESCAPED_UNICODE);
if(!empty($emailLst)) {
foreach ($emailLst as $key_ => $item_) {
$this->sendMail($msg, $item_);
}
}

邮件预览

系统运行时异常邮件预览

×

谢谢客官

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 系统业务异常页面
  2. 2. 解决方案
    1. 2.1. 引用ThinkPHP 邮件插件
    2. 2.2. TP5异常处理类增加邮件功能
      1. 2.2.1. Handlel类的内部增加邮件发送功能
      2. 2.2.2. 使用邮件发送功能
  3. 3. 邮件预览
,