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.mzph.cn/web/36570.shtml

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

相关文章

opengl函数加载和错误处理

#include <glad/glad.h>//glad必须在glfw头文件之前包含 #include <GLFW/glfw3.h> #include <iostream>void frameBufferSizeCallbakc(GLFWwindow* window, int width, int height) {std::cout << width << "," << height <&…

解决 systemctl Failed to locate executable : Permission denied

解决 systemctl Failed to locate executable : Permission denied 解决方案原因分析解决过程 解决方案 chown -R root:root /opt/jeremytsai/server/ chmod x /opt/jeremytsai/server/bin restorecon -rv /opt/jeremytsai/server/bin原因分析 owner id 错乱问题&#xff0c;…

创新实训(十三) 项目开发——实现用户终止对话功能

思路分析&#xff1a; 如何实现用户终止AI正在进行的回答&#xff1f; 分析实现思路如下&#xff1a; 首先是在用户点击发送后&#xff0c;切换终止对话&#xff0c;点击后大模型终止对话&#xff0c;停止sse&#xff0c;不再接收后端的消息。同时因为对话记录存入数据库是后…

2小时动手学习扩散模型(pytorch版)【入门版】【代码讲解】

2小时动手学习扩散模型&#xff08;pytorch版&#xff09; 课程地址 2小时动手学习扩散模型&#xff08;pytorch版&#xff09; 课程目标 给零基础同学快速了解扩散模型的核心模块&#xff0c;有个整体框架的理解。知道扩散模型的改进和设计的核心模块。 课程特色&#xf…

基于VMware的linux操作系统安装(附安装包)

目录 一、linux操作系统下载链接 二、开始导入镜像源 注&#xff1a;若是还没安装VMware请转到高效实现虚拟机&#xff08;VMware&#xff09;安装教程&#xff08;附安装包&#xff09;-CSDN博客 一、linux操作系统下载链接 1.官网链接下载 ubuntu&#xff1a;ubuntu官网…

java设计模式(一)——单例模式

一、模式介绍 单例模式: 某一个类在系统中只需要有一个实例对象&#xff0c;而且对象由这个类自行实例化并提供给系统其他地方使用&#xff0c;这个类称为单例类。 使用场景: 1、处理资源访问的冲突 2、从业务概念上有些数据在系统中只应保存一份 特点&#xff1a; 某个类只…

港湾周评|胖东来为什么是胖东来?蜜雪冰城为什么差之千里?

《港湾商业观察》李镭 似乎每一次胖东来的热搜&#xff0c;都堪称为教科书般化不利为有利&#xff0c;变坏事为好事。 6月27日凌晨&#xff0c;“胖东来商贸集团”官方公众号发布《关于新乡胖东来餐饮商户“擀面皮加工场所卫生环境差”的调查报告》&#xff0c;对于帮助其发现…

【C++ | 类型转换】转换构造函数、类型转换运算符 详解及例子源码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a; 本文未经允许…

git 代码回退 soft hard区别

一:只是本地修改提交到本地版本库仓库,代码如何回退 git hard 回退 会清除掉 你当前修改的所有文件代码内容 或添加的新文件 把当前文件恢复到没有修改前的状态 git soft 回退 不会清除掉 你当前修改的所有文件代码内容 或添加的新文件 把当前文件恢复到当时修改时的状…

Scrapy实现关键词搜索的数据爬取

爬虫技术对于从互联网上获取数据和信息非常重要&#xff0c;而scrapy作为一款高效、灵活和可扩展的网络爬虫框架&#xff0c;能够简化数据爬取的过程&#xff0c;对于从互联网上爬取数据的工作非常实用。本文将介绍如何使用scrapy实现关键词搜索的数据爬取。 Scrapy的介绍 Sc…

oca和 ocp有什么区别

OCA&#xff08;Oracle Certified Associate&#xff09;和OCP&#xff08;Oracle Certified Professional&#xff09;在Oracle的认证体系中是两种不同级别的认证&#xff0c;它们之间存在明显的区别。以下是对两者区别的详细解释&#xff1a; 认证级别&#xff1a; OCA&…

Linux /proc目录总结

1、概念 在Linux系统中&#xff0c;/proc目录是一个特殊的文件系统&#xff0c;通常被称为"proc文件系统"或"procfs"。这个文件系统以文件系统的方式为内核与进程之间的通信提供了一个接口。/proc目录中的文件大多数都提供了关于系统状态的信息&#xff0…

字体大小为0的巧妙应用:CSS中的font-size: 0px

在CSS的世界里&#xff0c;font-size: 0px是一个看似简单的属性&#xff0c;却有着不为人知而强大的功能。本文将通过一个具体的示例&#xff0c;探讨它在布局中的妙用。 问题背景 在网页设计中&#xff0c;我们经常需要将文本和图片水平对齐。但是&#xff0c;由于图片和文本…

AGX-ORIN I210网卡烧录mac地址

1、介绍 I210的固件,是烧录在外部的FLash中,且固件的前12个自己是MAC地址 所在的位置 因此 需要下载eeprom工具 ,已修改MAC地址 。 2、编译 使用企业账号登陆Intel官网,下载572162-eepromaccesstool-0.8.0.zip 解压 unzip 572162-eepromaccesstool-0.8.0.zipcd eeprom…

axios发送请求,后端无法获取cookie

1.前端 axios默认不携带cookie 添加如下代码 import axios from "axios" const requrst axios.create({baseURL: import.meta.env.VITE_APP_URL,timeout: 5000,}) //让axios携带cookie requrst.defaults.withCredentials true 2.后端nestjs main.ts app.enabl…

Linux容器篇-Docker容器的使用

文章目录 前言一、Docker的安装主机环境准备关闭防火墙关闭selinux时间同步关闭 swap配置操作系统yum源配置国内Docker-ce镜像源注意 二、安装docker-ce三、配置镜像加速器阿里云镜像加速器生成 四、Docker的使用Docker 客户端获取镜像启动容器查看所有的容器&#xff1a;启动已…

【Python】已解决:ModuleNotFoundError: No module named ‘LAC‘

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;ModuleNotFoundError: No module named ‘LAC‘ 一、分析问题背景 在开发或运行Python程序时&#xff0c;可能会遇到各种各样的报错&#xff0c;其中“ModuleNo…

安装OpenHarmony编译库和工具集

一、搭建开发环境 1.1、Ubuntu搭建&#xff0c;参考 VMware完美安装Ubuntu20.04-CSDN博客文章浏览阅读286次&#xff0c;点赞5次&#xff0c;收藏3次。详细介绍了VMware下安装Ubuntu20.04https://blog.csdn.net/longyuzi/article/details/139935769 1.2、拉取OpenHarmony源码…

Android studio Logcat 功能介绍

介绍 Android Studio Jellyfish版本下logcat功能&#xff0c;不同的tag会有不同的颜色&#xff0c;不同level等级的log默认也有不同的颜色。log过滤修改的更简洁了&#xff0c;原先的log视图只需要勾选就可以选择不同level的log了&#xff0c;当前需要在输入框中进行过滤器匹配…

Ansible自动化部署

AUTHOR&#xff1a;闫小雨TIME&#xff1a;2024-06-26 文章目录 一、Ansible简述1、使用者的四种交互方式2、Ansible工具集3、作用对象 二、Ansible安装1、使用yum安装&#xff0c;并安装EPEL仓库2、使用pip源代码安装3、使用pip直接安装 4、 创建ssh免交互登录 三、Ansible配置…