文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHP+swoole 异步发送Email

2023-09-01 06:10

关注

用到的库:swoole , PHPMailer , thinkphp5

用SWOOLE 新建一个服务

namespace app\common\service;class EmailService{public function email_server(){$serv = new \swoole_server('127.0.0.1',8122);$serv->set(array('task_worker_num' => 4));$serv->on('receive', function($serv, $fd, $from_id, $data) {//把收到的数据 提交到异步回调中$task_id = $serv->task($data);});$serv->on('task', function ($serv, $task_id, $from_id, $data) {//接受数据,发送邮箱信息$data = json_decode($data,true);if(isset($data['email'])){(new SmtpMail())->send($data['email'],$data['code'],$data['msg']);}$serv->finish('');});$serv->on('finish', function ($serv, $task_id, $data) {});$serv->start();}}

SmtpMail类

namespace app\common\service;use app\common\model\SystemLog;use PHPMailer\PHPMailer\PHPMailer;use think\Exception;use think\Log;class SmtpMail{private $host;private $port = 25;private $user;private $pass;private $sock;private $mail_format = 0;public function __construct(){}public function send($email,$code,$msg){$mail = new PHPMailer(true);  // Passing `true` enables exceptionstry {//服务器配置$mail->CharSet ="UTF-8";                     //设定邮件编码$mail->SMTPDebug = 0;                        // 调试模式输出$mail->isSMTP(); // 使用SMTP$mail->Host = 'smtp.163.com';                // SMTP服务器$mail->SMTPAuth = true;                      // 允许 SMTP 认证$mail->Username = 'xxx';                // SMTP 用户名  即邮箱的用户名$mail->Password = 'xxx';             // SMTP 密码  部分邮箱是授权码(例如163邮箱)$mail->setFrom('xxx@163.com', 'xxx');  //发件人$mail->addAddress($email, 'xxx');  // 收件人$mail->addReplyTo('xxx@163.com', 'xxx'); //回复的时候回复给哪个邮箱 建议和发件人一致//Content$mail->isHTML(true);      // 是否以HTML文档格式发送  发送后客户端可直接显示对应HTML内容$mail->Subject = 'xxx';$mail->Body    = $msg;$mail->AltBody = $msg;$res = $mail->send();return ['code'=>1,'msg'=>'发送成功'];} catch (Exception $e) {return ['code'=>0,'msg'=>$mail->ErrorInfo];}}//发送邮箱信息public function addSend($email,$code,$msg){$client = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);$ret = $client->connect("127.0.0.1", 8122);if(empty($ret)){return true;} else {$client->send(json_encode([    'type'=>1,'email'=>$email,'code'=>$code,'msg'=> $msg]));}return true;}}

服务端运行

namespace app\index\controller;use app\common\service\EmailService;class server{public function email_server(){    (new EmailService())->email_server();}}

在终端运行命令 php index.php /index/server/email_server

发送测试

<?phpnamespace app\index\controller;use app\common\service\SmtpMail;use think\Controller;class Index extends Controller{public function index_send_mail(){(new SmtpMail())->addSend("邮箱地址",0,"内容");}}

来源地址:https://blog.csdn.net/qq_34605417/article/details/128845949

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯