php 发送邮件【示例场景:发送订单保险运单邮件给第三方平台】

php 发送邮件【示例场景:发送订单保险运单邮件给第三方平台】

<?phpnamespace app\index\controller;use think\Db;
use service\ApiReturn;
use service\EmailSend;class TimedTask extends Base
{/*** Notes:发送邮件* @param $data* @param $user*/public function index(){// 创建一个PHPExcel对象//excel数据$excelData = $_excelData = [];$condition = [] ;$condition[] = [ 'order.status' , '=' , '9' ] ;$condition[] = [ 'order.is_del' , '=' , '0' ] ;$data = Db::name('order')->alias('order')->leftJoin('order_address start_address','start_address.order_id=order.aid and start_address.type=1')->leftJoin('order_address end_address','end_address.order_id=order.aid and end_address.type=3')->where($condition)->whereTime('order.end_time','yesterday')->field('order.order_sn,order.order_type,order.order_source,order.user_id,order.user_name,order.userMobile,order.cityName,order.start_time,order.end_time,order.receive_time,order.create_time')->field('start_address.name startaddress_name,start_address.subDetailAddress startaddress_detail')->field('end_address.name endaddress_name,end_address.subDetailAddress endaddress_detail')->select();foreach ($data as $key=>$value){$data[$key]['create_time'] = date('Y-m-d H:i:s',$value['create_time']) ;$data[$key]['receive_time'] = $value['receive_time'] ? date('Y-m-d H:i:s',$value['receive_time']) : '' ;$data[$key]['order_source'] = \app\common\model\Order::$order_source[$value['order_source']] ;$data[$key]['order_type'] = \app\common\model\Order::$orderTypes[$value['order_type']] ;$data[$key]['start_time'] = $value['start_time'] ? date('Y-m-d H:i:s',$value['start_time']) : '' ;$data[$key]['end_time'] = $value['end_time'] ? date('Y-m-d H:i:s',$value['end_time']) : '' ;$data[$key]['start_address'] = $value['startaddress_name'] . ' ' . $value['startaddress_detail'] ;$data[$key]['end_address'] = $value['endaddress_name'] . ' ' . $value['endaddress_detail'] ;}$date = date('n月d日',strtotime('yesterday')) ;$xlsName = "***{$date}货运险投保清单" ;//项目名称// 填充数据$indexFields = [['order_sn', '订单号'],['order_source', '订单来源'],['user_name', '用户名称或ID'],['userMobile', '联系电话'],['order_type', '订单类型'],['cityName', '服务城市'],['start_address', '服务起始地址'],['end_address', '服务结束地址'],['create_time', '订单创建时间'],['receive_time', '师傅接单时间'],['start_time', '订单开始时间'],['end_time', '订单结束时间'],];//文件路径$filePath = '/www/wwwroot/***项目地址***/public/uploads/order_excel/'.$xlsName.'.xls';//此处填写文件地址的绝对路径$excelData = $data ;$_excelData[0]['list'] = $excelData;$excelData = array_values($_excelData);createExcel($xlsName,$indexFields,$excelData,$filePath);$title = "***{$date}货运险投保清单" ;//项目名称$res = EmailSend::sendEmail('***收件箱***',$title,$title,$filePath);var_dump($res);exit;}}

调用发送邮件的方法↓↓↓

<?php
namespace service;use think\Db;
// 发送邮件验证码
class EmailSend
{public static function sendEmail($user_email,$title,$content, $file='',$type = "163"){require_once "../extend/PHPMailer/class.phpmailer.php";switch ($type) {//163邮箱case "163":$Host = "smtp.163.com";$SMTPSecure = "ssl";$Port = "465";break;//腾讯企业邮箱case "exmail_qq":$Host = "smtp.exmail.qq.com";$SMTPSecure = "ssl";$Port = 465;break;//qq邮箱case "qq":$Host = "smtp.qq.com";$SMTPSecure = "ssl";$Port = 465;break;//阿里邮箱case "ali":$Host = "smtp.mxhichina.com";$SMTPSecure = "ssl";$Port = 465;break;default:$Host = "smtp.163.com";$SMTPSecure = "ssl";$Port = "465";}$mail = new \PHPMailer(); //实例化 $mail->IsSMTP(); // 启用SMTP$mail->SMTPDebug = 0;$mail->Host =   $Host; //SMTP服务器 以163邮箱为例子$mail->SMTPSecure = 'ssl';$mail->Port =  $Port;  //邮件发送端口$mail->SMTPAuth   = true;  //启用SMTP认证$mail->CharSet  = "UTF-8"; //字符集 $mail->Encoding = "base64"; //编码方式 //邮箱配置$email_config = Db::name('member_config')->where('name','email')->value('value');$email_config = json_decode($email_config,true);$mail->Username = $email_config['web_email'];  //你的邮箱$mail->Password = $email_config['web_email_pass'];  //你的密码$mail->Subject = $title; //邮件标题 $mail->From = $email_config['web_email'];  //发件人地址(也就是你的邮箱)$mail->FromName = "";  //发件人姓名$mail->AddAddress($user_email, "");//添加收件人(地址,昵称) //$mail->AddAttachment($path,'投稿附件.'.$filetype);if($file){$excel = explode('.'.$file);$mail->AddAttachment($file,$excel[0]); // 添加附件,并指定名称}//$mail->AddAttachment('投稿附件.docx',$name); // 添加附件,并指定名称$mail->IsHTML(true); //支持html格式内容//$mail->AddEmbeddedImage("logo.jpg", "my-attach", "logo.jpg"); //设置邮件中的图片 $text = $content;$mail->Body = $text;
//        var_dump($mail);exit;//发送if(!$mail->Send()) {//echo "Mailer Error: " . $mail->ErrorInfo;return array('error' => $mail->ErrorInfo);}else{return true;}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/366717.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【观察】戴尔科技+AMD:释放技术创新“乘数效应”,助力制造业打造“新质生产力”...

在今年的政府工作报告中&#xff0c;“人工智能”首次被写入报告&#xff0c;同时“大力推进现代化产业体系建设&#xff0c;加快发展新质生产力”也被列为2024年的首项政府工作任务&#xff0c;其重要性不言而喻。 尤其是最近几年&#xff0c;以人工智能、大模型、大数据、云计…

成人职场商务英语学习柯桥外语学校|邮件中的“备注”用英语怎么说?

在英语中&#xff0c;"备注"通常可以翻译为"Notes" 或 "Remarks"。 这两个词在邮件中都很常用。例如: 1. Notes Notes: 是最通用和最常见的表达&#xff0c;可以用在各种情况下&#xff0c;例如&#xff1a; 提供有关电子邮件内容的附加信息 列…

深入解析 androidx.databinding.Bindable 注解

在现代 Android 开发中&#xff0c;数据绑定 (Data Binding) 是一个非常重要的技术。它使得我们能够简化 UI 和业务逻辑之间的连接&#xff0c;从而提高代码的可读性和维护性。在数据绑定中&#xff0c;Bindable 注解是一个关键部分&#xff0c;它帮助我们实现双向数据绑定和自…

编写动态库

1.创建库.c .h文件 2.编写Makefile文件 3.make之后形成.so文件 4.make output,形成mylib 5.把mylib拷贝到test里面 mv mylib /test 6.编译 gcc main.c -I mylib/include -L mylib/lib -lmymethod形成a.out 但是直接执行会出现以下问题 很显然没有找到动态库 7.解决加载找不…

怎样在《语文世界》期刊上发表论文?

怎样在《语文世界》期刊上发表论文&#xff1f; 《语文世界》知网国家级 1.5-2版 2500字符左右 正常收25年4-6月版面 可加急24年内&#xff08;初中&#xff0c;高中&#xff0c;中职&#xff0c;高职&#xff0c;大学均可&#xff0c;操作周期2个月左右&#xff09; 《语文世…

MM-LLM:使用Llava类构建图文多模态大模型实践

多模态大模型的结构如上&#xff0c;llava是用两层MLP作为连接器。该模式也是后续很多工作的基础。 本文主要参考了https://github.com/yuanzhoulvpi2017/zero_nlp/tree/main/train_llava的工作&#xff0c;最初是在b站看到的&#xff0c;讲解的很细致。 基础模型 大语言模型…

Xilinx FPGA:vivado利用单端RAM/串口传输数据实现自定义私有协议

一、项目要求 实现自定义私有协议&#xff0c;如&#xff1a;pc端产生数据&#xff1a;02 56 38 &#xff0c;“02”代表要发送数据的个数&#xff0c;“56”“38”需要写进RAM中。当按键信号到来时&#xff0c;将“56”“38”读出返回给PC端。 二、信号流向图 三、状态…

真的假不了,假的真不了

大家好&#xff0c;我是瑶琴呀&#xff0c;拥有一头黑长直秀发的女程序员。 最近&#xff0c;17岁的中专生姜萍参加阿里巴巴 2024 年的全球数学竞赛&#xff0c;取得了 12 名的好成绩&#xff0c;一时间在网上沸腾不止。 从最开始的“数学天才”&#xff0c;到被质疑&#xff…

Linux CentOS 环境 MySQL 主从复制集群搭建

环境说明 MySQL版本8.4.0 操作系统 Linux CentOS 7.9 官网文档 https://dev.mysql.com/doc/refman/8.4/en/replication-configuration.html 以下代码片段中带分号都是在MySQL命令行( mysql -uroot -p)中执行 1. 首先在两个节点上安装数据库 参考 Linux CentOS安装MySQL8.0 …

C++编程(五)单例模式 友元

文章目录 一、单例模式&#xff08;一&#xff09;概念&#xff08;二&#xff09;实现方式1. 饿汉式2. 懒汉式 二、友元&#xff08;一&#xff09;概念&#xff08;二&#xff09;友元函数1.概念2.语法格式3. 使用示例访问静态成员变量访问非静态成员变量 &#xff08;三&…

Victor CMS v1.0 SQL 注入漏洞(CVE-2022-28060)

前言 CVE-2022-28060 是 Victor CMS v1.0 中的一个SQL注入漏洞。该漏洞存在于 /includes/login.php 文件中的 user_name 参数。攻击者可以通过发送特制的 SQL 语句&#xff0c;利用这个漏洞执行未授权的数据库操作&#xff0c;从而访问或修改数据库中的敏感信息。 漏洞详细信…

78.Vue 3 重用性模态框组件

模态框是大多数 Web 应用程序中的基本构建块。虽然最初实现起来可能看起来有点棘手&#xff0c;但实际上&#xff0c;使用 Vue 和一些 Flexbox 技巧&#xff0c;这不仅可行&#xff0c;而且非常简单。 让我们一起实现一个基础的模态框组件。 架构如下&#xff1a; AppModal.vue…

Ubuntu22 更新内核后终端输入卡顿,最简单的解决方案

在系统升级后相信很多人都遇到了这个问题&#xff0c;系统终端输入卡顿&#xff0c;但是ssh远程进来不卡&#xff0c;使用第三方终端也不卡,…&#xff0c;今天终于忍不了&#xff0c;解决了 现象&#xff1a; 更新Nvidia驱动后,内核进行了自动编译升级。 之后的一段时间使用…

用MySQL+node+vue做一个学生信息管理系统(五):学生信息增删改的实现

先实现增加信息&#xff1a; post参数的获取&#xff1a;express中接受post请求参数需要借助第三方包 body-parser 下载npm install body-parser //引入body-parser模块 const bodyParser require(body-parser); //拦截所有请求,配置body-parser模块 //extended:false 方法…

Linux多线程【线程互斥】

文章目录 Linux线程互斥进程线程间的互斥相关背景概念互斥量mutex模拟抢票代码 互斥量的接口初始化互斥量销毁互斥量互斥量加锁和解锁改进模拟抢票代码&#xff08;加锁&#xff09;小结对锁封装 lockGuard.hpp 互斥量实现原理探究可重入VS线程安全概念常见的线程不安全的情况常…

Python基础001

Python输出语句 print输出字符串 print("中国四大名著&#xff1a;","西游记|","三国演义|","红楼梦|","水浒传") print(6) print(1 1)Python输入语句 input函数 input() input("我的名字是&#xff1a;") p…

五、Spring IoCDI ★ ✔

5. Spring IoC&DI 1. IoC & DI ⼊⻔1.1 Spring 是什么&#xff1f;★ &#xff08;Spring 是包含了众多⼯具⽅法的 IoC 容器&#xff09;1.1.1 什么是容器&#xff1f;1.1.2 什么是 IoC&#xff1f;★ &#xff08;IoC: Inversion of Control (控制反转)&#xff09;总…

Excel 宏录制与VBA编程 —— 14、使用VBA处理Excel事件

简介 若希望特定事件处理程序在触发特定事件时运行&#xff0c;可以为 Application 对象编写事件处理程序。 Application 对象的事件处理程序是全局的&#xff0c;这意味着只要 Microsoft Excel 处于打开状态&#xff0c;事件处理程序将在发生相应的事件时运行&#xff0c;而不…

数据结构与算法笔记:高级篇 - 搜索:如何用 A* 搜索算法实现游戏中的寻路功能?

概述 魔兽世界、仙剑奇侠传这类 MMRPG 游戏&#xff0c;不知道你玩过没有&#xff1f;在这些游戏中&#xff0c;有一个非常重要的功能&#xff0c;那就是任务角色自动寻路。当任务处于游戏地图中的某个位置时&#xff0c;我们用鼠标点击另外一个相对较远的位置&#xff0c;任务…

简单分享 for循环,从基础到高级

1. 基础篇&#xff1a;Hello, For Loop! 想象一下&#xff0c;你想给班上的每位同学发送“Hello!”&#xff0c;怎么办&#xff1f;那就是for循环啦&#xff0c; eg&#xff1a;首先有个名字的列表&#xff0c;for循环取出&#xff0c;分别打印 names ["Alice", …