thinkphp5 异步调用方法_详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
本文介绍了thinkphp5+swoole实现异步邮件群发(SMTP方式),分享给大家,具体如下:
1、环境说明
阿里云centos7
thinkphp5.0.11
swoole2.0.8
2、tp实现邮件发送
在项目下建立如下的文件目录:
其中SendMail.php是我们实际调用的发送邮件的文件。以下是主要代码:
namespace applibraryutilsmail;
use applibraryutilsmailPhpMailer;
use applibraryutilsmailSmtp;
use thinkLog;
error_reporting(E_STRICT);
date_default_timezone_set('Asia/Shanghai');
class SendMail
{
static function postmail($to,$subject = '',$body = ''){
$mail = new PhpMailer();
$mail->CharSet = config('mail.CharSet');
$mail->IsSMTP();
$mail->SMTPDebug = config('mail.SMTPDebug');
$mail->SMTPAuth = config('mail.SMTPAuth');
$mail->SMTPSecure = config('mail.SMTPSecure');
$mail->Host = config('mail.Host');
$mail->Port = config('mail.Port');
$mail->Username = config('mail.Username');
$mail->Password = config('mail.Password');
$mail->SetFrom(config('mail.From'), config('mail.Name'));
$mail->Subject = $subject;
$mail->MsgHTML($body);
$address = $to;
$mail->AddAddress($address, '');
if(!$mail->Send()) {
Log::write('send to '.$to.'error info:'.$mail->ErrorInfo);
return false;
} else {
return true;
}
}
}
里面的config配置项,我们放在项目底下的config.php文件中,具体配置内容如下:
//邮箱设置
'mail'=>[
'CharSet'=>'UTF-8',
'SMTPDebug'=>0,// 启用SMTP调试功能 0关闭
'SMTPAuth'=>true,// 启用 SMTP 验证功能
'SMTPSecure'=>'ssl',// 安全协议
'Host'=>'smtp.163.com',// SMTP 服务器
'Port'=>465,// SMTP服务器的端口号
'Username'=>'**********',// SMTP服务器用户名
'Password'=>'**********',// SMTP服务器密码
'From'=>'*********@163.com',// 发件人邮箱
'Name'=>'blue',// 发件人邮箱
]
2.1这里我们只是实现了smtp协议发送的demo,所以在封装的层面上没有做到很全面,不是很灵活。图中其他两个文件(PhpMailer.php和Smtp.php)是Phpmailer邮件发送类的核心文件,为了简化调用,抽取了出来,详细的用法和参数设置,可以参考gayhub的使用说明phpmailer
2.2 注意点
在此步骤中,我们需要注意几点:1是你设置的邮件发送的账号是否已经开启SMTP并且找对对应的安全协议和端口号。2、当前服务器是否支持SMTP服务,这边很多时候会受一些socket函数的影响,遇到问题的时候,我们应该把SMTPDebug参数设置为1,然后根据debug信息去细心调试。3、发出的邮件有些会被放入垃圾箱,注意查收。
2.3 调用
建立如下的文件目录结构:
thinkphp5 异步调用方法_详解thinkphp5+swoole实现异步邮件群发(SMTP方式)相关推荐
- java性能最好的mvc框架_详解Spring MVC的异步模式(高性能的关键)
什么是异步模式 要知道什么是异步模式,就先要知道什么是同步模式,先看最典型的同步模式: 浏览器发起请求,Web服务器开一个线程处理,处理完把处理结果返回浏览器.好像没什么好说的了,绝大多数Web服务器 ...
- java 数组合并_拼接_详解Java合并数组的两种实现方式
详解Java合并数组的两种实现方式 发布于 2020-7-27| 复制链接 摘记: 最近在写代码时遇到了需要合并两个数组的需求,突然发现以前没用过,于是研究了一下合并数组的方式,总结如下.1.Syst ...
- python解释器在哪里_详解查看Python解释器路径的两种方式
进入python的安装目录, 查看python解释器 进入bin目录 # ls python(看一下是否有python解释器版本) # pwd (查看当前目录) 复制当前目录即可 1. 通过脚本查看 ...
- sh执行文件 参数传递_详解shell中脚本参数传递的两种方式
方式一:$0,$1,$2.. 采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${ ...
- java生成pdf方法_详解Java生成PDF文档方法|chu
最近项目需要实现PDF下载的功能,由于没有这方面的经验,从网上花了很长时间才找到相关的资料.整理之后,发现有如下几个框架可以实现这个功能. 1. 开源框架支持iText,生成PDF文档,还支持将XML ...
- python random库生成伯努利随机数的方法_详解Python基础random模块随机数的生成
随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入ran ...
- java 异步调用方法_乐字节Java编程之方法、调用、重载、递归
一.概述 方法是指人们在实践过程中为达到一定目的和效果所采取的办法.手段和解决方案. 所谓方法,就是解决一类问题的代码的有序组合,是一个功能模块.编程语言中的方法是组合在一起来执行操作语句的集合.例如 ...
- java中的invoke方法_详解Java中Method的Invoke方法
在写代码的时候,发现从父类class通过getDeclaredMethod获取的Method可以调用子类的对象,而子类改写了这个方法,从子类class通过getDeclaredMethod也能获取到M ...
- python不是内部或外部命令的解决方法_详解python常见报错--NO MODULE NAMED _SQLITE3解决方法...
概述 在安装一些基于python的程序时,经常遇到"ImportError: No module named _sqlite3"问题. 下面记录下解决方法. 解决办法 1.编译sq ...
最新文章
- 海量数据处理的思路和方法
- ArcGIS注册SDE库数据源
- SQL SERVER2000将多行查询结果拼接到一行数据及函数的创建
- java集成spring,Spring集成
- react router官方文档_利用 React 高阶组件实现一个面包屑导航
- VisualStudio开发工具中的C#主流控件属性及事件汇总(菜鸟必备)
- 开发计算机软件的基本流程
- 如何用计算机录视频,如何在电脑上录制正在播放的视频?原来方法这么简单
- 学到了林海峰,武沛齐讲的Day17-5 内置函数
- 免费FTP解决方案之FileZilla
- 华为nova7se能云闪付吗_华为nova7se活力版和华为nova7区别
- 天龙八部 - 其它 - 属性伤害的计算方法
- 我对马斯洛需求层次的理解
- 计算机网卡更改mac地址,苹果MAC地址怎么改?MAC网卡物理地址修改的详细方法
- 谈判技巧——执行合同
- Java面试题-个人笔记
- wix log_如何正确地从Wix切换到WordPress(逐步操作)
- 聊聊刘慈欣作品的风格
- 蛋壳公寓信息/信息网爬取/小猪短租/豆瓣/拉钩/人民邮电报/百度电视剧/加载更多-获取字符串中间任意内容
- Godot中的GIProbe和Baked lightmaps