lumen中邮件发送案例

lumen中邮件发送以及邮件告警,在此记录

  1. 安装邮件组件
    修改composer.json,在require中增加以下语句,并执行composer update

     "illuminate/mail": "^5.8",
    
  2. 在config下创建mail.php,内容如下

     return [
    'driver' => env('MAIL_DRIVER'),
    'host' => env('MAIL_HOST'), // 根据你的邮件服务提供商来填
    'port' => env('MAIL_PORT'), // 同上
    'encryption' => env('MAIL_ENCRYPTION'), // 同上 一般是tls或ssl
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS',env('MAIL_USERNAME')),
        'name' => env('MAIL_FROM_NAME',env('MAIL_USERNAME')),
    ],
    ];
    
  3. 在.env中添加以下代码

    这里用的是网易的邮箱,需要登录你的邮箱,点开设置,这个授权码在下面 MAIL_PASSWORD这里会用到

在这里插入图片描述

 	```
	MAIL_DRIVER=smtp
	MAIL_HOST=smtp.163.com
	MAIL_PORT=465
	MAIL_USERNAME=test@163.com
	MAIL_PASSWORD=test@163
	MAIL_ENCRYPTION=ssl
	```
  1. 在bootstrap/app.php,添加以下几行代码

    $app->singleton('mailer', function () use ($app) {
    return $app->loadComponent('mail', Illuminate\Mail\MailServiceProvider::class, 'mailer');
    });
    
    $app->configure('mail');
    
  2. 在resources\views目录下创建emails\sys_error.blade.php

    环境: {{ $env }} {{ gethostname() }}
    
    是否是系统级异常报告: {{ $is_report ? '是' : '否' }}
    
    @if(app()->runningInConsole())
    Console message:
     Argv: {!! var_export($GLOBALS['argv'], true) !!}
    @else
    Request message:
     URL: {{ \Request::fullUrl() }}     //当前文件夹的url
     IP: {{ \Request::server('REMOTE_ADDR') }}  //IP地址
     UA: {{ \Request::server('HTTP_USER_AGENT') }}  
    @endif
    
    Exception:
      时间:{{ date('Y-m-d H:i:s') }}
      异常: {{ get_class($e) }}
      错误码: {{ $e->getCode() }} 错误内容: {!! $e->getMessage() !!}
      错误文件: {{ $e->getFile() }} {{ $e->getLine() }}
    
    错误栈:
    {!! $e->getTraceAsString() !!}
    
  3. 在控制器中发送邮件

    use Illuminate\Support\Facades\Mail;
    use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
    
    class Controller extends BaseController
    {
       
        public function test(Request $request)
        {
    
           //测试发送告警邮件
           try {
              $this->checkNum(2);
           } catch (\Exception $e) {
              $this->email($e,true);
                exit();
           }
    }
    public function checkNum($number)
    {
        if($number>1)
        {
            throw new \Exception("Value must be 1 or below");
        }
        return true;
    }
    public function email($e,$is_laravel_report=false)
    {
            $mail_to = env('EXCEPTION_MAIL_TO');
            log_daily('test')->info('发邮件开始:'.date('Y-m-d H:i:s',time()));
            Mail::send(['text' => 'emails.sys_error'], ['e' => $e, 'env' => app()->environment(), 'is_report' => $is_laravel_report], function($msg) use ($mail_to, $e){
                $msg->to($mail_to)->subject("异常:" .get_class($e));
            });
            log_daily('test')->info('发邮件结束开始:'.date('Y-m-d H:i:s',time()));
    
    
    }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值