本文介绍了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方式)相关推荐

  1. java性能最好的mvc框架_详解Spring MVC的异步模式(高性能的关键)

    什么是异步模式 要知道什么是异步模式,就先要知道什么是同步模式,先看最典型的同步模式: 浏览器发起请求,Web服务器开一个线程处理,处理完把处理结果返回浏览器.好像没什么好说的了,绝大多数Web服务器 ...

  2. java 数组合并_拼接_详解Java合并数组的两种实现方式

    详解Java合并数组的两种实现方式 发布于 2020-7-27| 复制链接 摘记: 最近在写代码时遇到了需要合并两个数组的需求,突然发现以前没用过,于是研究了一下合并数组的方式,总结如下.1.Syst ...

  3. python解释器在哪里_详解查看Python解释器路径的两种方式

    进入python的安装目录, 查看python解释器 进入bin目录 # ls python(看一下是否有python解释器版本) # pwd (查看当前目录) 复制当前目录即可 1. 通过脚本查看 ...

  4. sh执行文件 参数传递_详解shell中脚本参数传递的两种方式

    方式一:$0,$1,$2.. 采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${ ...

  5. java生成pdf方法_详解Java生成PDF文档方法|chu

    最近项目需要实现PDF下载的功能,由于没有这方面的经验,从网上花了很长时间才找到相关的资料.整理之后,发现有如下几个框架可以实现这个功能. 1. 开源框架支持iText,生成PDF文档,还支持将XML ...

  6. python random库生成伯努利随机数的方法_详解Python基础random模块随机数的生成

    随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入ran ...

  7. java 异步调用方法_乐字节Java编程之方法、调用、重载、递归

    一.概述 方法是指人们在实践过程中为达到一定目的和效果所采取的办法.手段和解决方案. 所谓方法,就是解决一类问题的代码的有序组合,是一个功能模块.编程语言中的方法是组合在一起来执行操作语句的集合.例如 ...

  8. java中的invoke方法_详解Java中Method的Invoke方法

    在写代码的时候,发现从父类class通过getDeclaredMethod获取的Method可以调用子类的对象,而子类改写了这个方法,从子类class通过getDeclaredMethod也能获取到M ...

  9. python不是内部或外部命令的解决方法_详解python常见报错--NO MODULE NAMED _SQLITE3解决方法...

    概述 在安装一些基于python的程序时,经常遇到"ImportError: No module named _sqlite3"问题. 下面记录下解决方法. 解决办法 1.编译sq ...

最新文章

  1. 海量数据处理的思路和方法
  2. ArcGIS注册SDE库数据源
  3. SQL SERVER2000将多行查询结果拼接到一行数据及函数的创建
  4. java集成spring,Spring集成
  5. react router官方文档_利用 React 高阶组件实现一个面包屑导航
  6. VisualStudio开发工具中的C#主流控件属性及事件汇总(菜鸟必备)
  7. 开发计算机软件的基本流程
  8. 如何用计算机录视频,如何在电脑上录制正在播放的视频?原来方法这么简单
  9. 学到了林海峰,武沛齐讲的Day17-5 内置函数
  10. 免费FTP解决方案之FileZilla
  11. 华为nova7se能云闪付吗_华为nova7se活力版和华为nova7区别
  12. 天龙八部 - 其它 - 属性伤害的计算方法
  13. 我对马斯洛需求层次的理解
  14. 计算机网卡更改mac地址,苹果MAC地址怎么改?MAC网卡物理地址修改的详细方法
  15. 谈判技巧——执行合同
  16. Java面试题-个人笔记
  17. wix log_如何正确地从Wix切换到WordPress(逐步操作)
  18. 聊聊刘慈欣作品的风格
  19. 蛋壳公寓信息/信息网爬取/小猪短租/豆瓣/拉钩/人民邮电报/百度电视剧/加载更多-获取字符串中间任意内容
  20. Godot中的GIProbe和Baked lightmaps

热门文章

  1. HTTP返回代码代表的含义(403,404,500,502,504)
  2. mysql取系统当前时间的函数
  3. android 判断service是否开启
  4. Installshield2010实现web部署和数据库安装示例
  5. GB28181流媒体服务LiveGBS启动报错 HTTP Port[10000] In Use
  6. java编程思想第四版第十八章总结
  7. Java基础之PDF文件的合并
  8. String类的常见方法的使用案例
  9. Kraft 0.50 发布,小型文档管理程序
  10. linux 内核学习线索初步