Laravel 任务调度 使用自带SMTP邮件组件实现发送邮件

laravel自带SMTP邮件配置和遇到的坑

laravel自带SwiftMailer库,集成了多种邮件API,可以很方便的实现邮件的发送。在本教程中使用到的是SMTP(Simple Message Transfer Protocol)简单邮件传输协议,通常理解为邮件发送服务器。

以QQ邮箱为例

使用QQ邮箱的话,需要开启POP3和SMTP服务(QQ邮箱登录=》选择设置=》账户=》下拉找到
POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务)。
使用企业邮箱不用开启SMTP,因为企业邮箱自带,如果配置有问题去查一下是否关闭安全登录(企业邮箱)
开启方式如下:

在这里插入图片描述

并且生成授权码

如图:
在这里插入图片描述

更改 .env的配置

MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
MAIL_USERNAME= *************@qq.com
MAIL_PASSWORD=授权码
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=***********@qq.com
MAIL_FROM_NAME="${APP_NAME}"

MAIL_DRIVER #邮件的驱动类型,默认采用smtp
MAIL_HOST #使用的什么邮箱,这里是qq的邮箱
MAIL_PORT #ssl层的端口
MAIL_USERNAME #发送人的邮箱账号
MAIL_PASSWORD #qq的授权码
MAIL_FROM_ADDRESS #您的邮件地址
MAIL_FROM_NAME #邮箱的名称

protected function schedule(Schedule $schedule)
{
    $schedule->call(function () {
      // Mail::send()的返回值为空,所以可以其他方法进行判断
            Mail::send('email.test',['name'=>$str],function($message){
                $to = '*******@qq.com'; $message ->to($to)->subject(date('Y-m-d').'-体温信息:');
            });
			// 返回的一个错误数组,利用此可以判断是否发送成功 
   		  		 dd(Mail::failures());
            })->everyMinute();
    }

Mail使用的是laravel的门面类 to 方法接收邮箱地址、用户实例或用户集合作为参数。如果传递的是对象或对象集合,在设置邮件收件人的时候邮件会自动使用它们的 email 和 name 属性,所以事先要确保这些属性在相应类上有效。指定好收件人以后,传递一个可邮寄类的实例到 send 方法
subject该方法可以定义发送邮件的标题

执行命令

[root@root exam_api]# crontab -e

进入cron条目

* * * * * /usr/local/php/bin/php /data/wwwroot/default/exam/exam_api/artisan schedule:run >>//data/wwwroot/default/exam/temp.log
加入如上代码

使用php绝对路径执行框架路径追加到一个日志下 该命令设置是每分钟执行一次

完成 ,该任务会每分钟发送一份邮件

参考博客 https://blog.csdn.net/woqianduo/article/details/81024244
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值