PHP 使用ThinkPHP实现电子邮件发送示例

news2024/12/28 22:08:35

文章目录

  • 首先我们需要设置我们的邮箱客户端授权,获取到授权码
    • 找到我们的邮箱设置
    • 去账号中找到这一堆服务,找到后开启smtp服务
    • 开启服务后管理服务
  • 接下来需要去下载相应的第三方类库(我这里使用的是PHPMailer)
  • 在thinkPHP中封装一下邮件服务类
    • 实际调用
    • 效果
  • 总结

在我们很多的程序中都需要发送邮件去提示用户一些相关信息,应用的范围还是很广的,比如:登录验证需要验证码,后台管理系统中有变更需要发送邮箱提示等,而且邮件的发送相较于短信发送成本更低,是 免费的!!
那么要实现邮件发送需要做以下操作:

首先我们需要设置我们的邮箱客户端授权,获取到授权码

找到我们的邮箱设置

我这边使用的是QQ邮箱,每个邮箱基本都差不多
QQ邮箱首页

去账号中找到这一堆服务,找到后开启smtp服务

QQ邮箱设置账号页服务区

开启服务后管理服务

在这里点击就可以获取到授权码啦
QQ邮箱获取stmp授权码获取

接下来需要去下载相应的第三方类库(我这里使用的是PHPMailer)

直接使用composer安装扩展phpmailer

composer require phpmailer/phpmailer

在thinkPHP中封装一下邮件服务类

我把它封装在了application目录下的common.php公共类中,下面是代码:

// 应用公共文件
namespace app;

class Common
{
    // 应用公共文件
    /**
     * 邮件发送
     * @param email 邮箱号,发送给谁
     * @param code 邮件内容
     */
    public function send_code_to_email($email, $code)
    {
        Vendor('PHPMailer.PHPMailerAutoload');//这里引入一下刚才安装扩展的自动加载类
        $mail = new \PHPMailer(); // 实例化类,新建
        $mail->isSMTP(); //  开启SMTP
        $mail->CharSet = 'utf8'; // 设置编码
        $mail->Host = 'smtp.qq.com'; // SMTP服务器
        $mail->SMTPAuth = true; // smtp需要鉴权 这个必须是true
        $mail->Username = ''; // 发信人的账号,这个需要是开启stmp服务的邮箱号
        $mail->Password = ""; // 密码,非邮箱密码,是SMTP生成的密码,也就是授权码
        $mail->From = ''; // 发信人的地址
        $mail->SMTPSecure = 'ssl'; // 采用ssl协议,这里采用了加密,端口需要进行开放:465或587
        $mail->Port = 465; // 端口号
        $mail->FromName = ""; // 发件人昵称
        $mail->addAddress($email); // 收信人地址
        $mail->addReplyTo($email); //回复的时候回复的邮箱,建议和发信人一样
        $mail->Subject = ""; // 邮件主题,看自己需求
        $mail->Body = $code; // 邮件内容
        if (!$mail->send()) {
            return json([400, $mail->ErrorInfo]);
        } else {
            return json([200, '验证码已经发送成功']);
        }
    }
}

我这边是只封装了收件人和邮件内容,看具体业务需求,可以将主题,发件人昵称也封装一下

实际调用

在需要调用的地方进行调用就可以了,当然要先将公共类引入
在需要调用的控制器文件中的命名空间下使用use引入

use app\Common;

调用函数

/**
 * 电子邮件
 * @param string $email邮箱号
 * @param string $code邮件内容
 * 具体到common应用公共函数文件内找senf_code_to_email方法
 */
public function sends()
{
    $email = input('email');//获取到收件人
    $code = input('code');//获取到邮件内容
    $send = new Common();//实例化公共类
    return $send->send_code_to_email($email, $code);//调用封装好的方法
}

效果

我这边直接用网页url调用了一下
调用返回
收到邮件:
收到邮件

总结

总体其实还是比较简单的,需要注意如果不使用ssl安全协议的话端口是25,不过阿里云是强制ssl安全的,所以最好还是使用465端口比较好
到邮箱中授权开启获取授权码->在thinkPHP框架中使用composer安装PHPMailer扩展->封装一下发送邮件方法->在业务中调用即可

希望对大家有所帮助,如果觉得有用的话还请不吝三连
请添加图片描述

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

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

相关文章

Java 常用编辑器 IntelliJ IDEA

文章目录 IDEA 概述IDEA 下载和安装IDEA 中的第一个代码IDEA 的项目和模块操作(一)类的操作(二)模块的操作(三)项目的操作 IDEA 概述 IntelliJ IDEA是一款由JetBrains开发的集成开发环境(IDE&am…

Android T 窗口层级其二 —— 层级结构树的构建(更新中)

如何通过dump中的内容找到对应的代码? 我们dump窗口层级发现会有很多信息,adb shell dumpsys activity containers 这里我们以其中的DefaultTaskDisplayArea为例 在源码的framework目录下查找该字符串,找到对应的代码就可以通过打印堆栈或者…

计算机的构造和原理

本资料转载于B站up主芯片超人-花 仅用于学习和讨论,如有侵权请联系 计算机工作原理之3D动画揭秘:计算机内部如何工作_哔哩哔哩_bilibili 1.CPU的部分 1.1 CPU放大看 1.2 一个芯片中,有80亿至100亿晶体管 1.3 放大磁道 1.4 共享3级缓存 1.5 …

kafka是有序的吗?如何保证有序?

首先,Kafka无法保证消息的全局有序性,这是因为Kafka的设计中允许多个生产者并行地向同一个主题写入消息。而且,一个主题可能会被划分为多个分区,每个分区都可以在独立的生产者和消费者之间进行并行处理。因此,生产者将…

C字符串与C++ string 类:用法万字详解(下)

目录 引言 一、string类对象的修改操作 1.1 push_back() 1.2 append() 1.3 operator() 1.4 c_str() 1.5 substr() 1.6 find() 1.7 rfind() 二、string类非成员函数 2.1 operator() 2.2 operator<<() 2.3 operator>>() 2.4 getline() 2.5 relational …

TFRecords详解

内容目录 TFRecords 是什么序列化(Serialization)tf.data 图像序列化&#xff08;Serializing Images)tf.Example函数封装 小结 TFRecords 是什么 TPU拥有八个核心&#xff0c;充当八个独立的工作单元。我们可以通过将数据集分成多个文件或分片&#xff08;shards&#xff09;…

phpstorm添加vue 标签属性绑定提示和提示vue的方法提示

v-text v-html v-once v-if v-show v-else v-for v-on v-bind v-model v-ref v-el v-pre v-cloak v-on:click v-on:keyup.enter v-on:keyup click change input number debounce transition :is :class把上面这些文字粘贴到点击右下角放大按钮 后的文本框里&#xff0c;然后保存…

混合云环境中 Kubernetes 可观测性的 6 个有效策略...

2023 年&#xff0c;原生云应用程序和平台将快速增长。组织不断努力最大限度地发挥其应用程序的潜力&#xff0c;确保无缝的用户体验并推动业务增长。 混合云环境的兴起以及 Kubernetes 等容器化技术的采用彻底改变了现代应用程序的开发、部署和扩展方式。 在这个数字领域&am…

Redis 搭建分片集群

文章目录 0.10.2 散列插槽0.3 集群伸缩0.3.1 需求分析0.3.1 创建新的 Redis 实例0.3.3 添加新节点到 Redis0.3.4 转移插槽 0.4 故障转移0.4.1 自动故障转移0.4.2 生动故障转移 0.5 RedisTemplate访问分片集群 1. 集群架构2. 准备实例和配置3. 启动4. 创建集群5. 测试 0.1 主从…

刷新缓冲区(标准IO)

标准IO是带缓冲的&#xff0c;输入和输出函数属于行缓冲&#xff0c;stdin、stdin、printf、scanf 1.换行符刷新 2.缓冲区满刷新 3.fflush函数强制刷新 4.程序正常结束

绩效考核,职场人的痛!

绩效&#xff0c;已经成为职场人不能跳过的话题。 绩效作为提高员工和企业效率的有效手段&#xff0c;已经被越来越公司采用&#xff0c;现在&#xff0c;公司里几乎任何一个岗位都会被考核&#xff0c;特别是互联网公司。今天我们以产品经理为例&#xff0c;看看这个岗位的绩效…

苍穹外卖day11笔记

今日首先介绍前端技术Apache ECharts&#xff0c;说明后端需要准备的数据&#xff0c;然后讲解具体统计功能的实现&#xff0c;包括营业额统计、用户统计、订单统计、销量排名。 一、ECharts 是什么 ECharts是一款基于 Javascript 的数据可视化图表库。我们用它来展示图表数…

leetcode每日一练-第121题-买卖股票的最佳时机

一、思路 动态规划 二、解题方法 维护两个变量&#xff1a;一个表示当前最低的股票价格 minPrice&#xff0c;另一个表示当前最大的利润 maxProfit。 遍历数组中的每个价格&#xff0c;对于每个价格&#xff0c;更新 minPrice 和 maxProfit。具体做法是&#xff0c;如果当前…

【Linux】TCP协议——传输层

目录 TCP协议 谈谈可靠性 TCP协议格式 序号与确认序号 窗口大小 六个标志位 确认应答机制&#xff08;ACK&#xff09; 超时重传机制 连接管理机制 三次握手 四次挥手 流量控制 滑动窗口 拥塞控制 延迟应答 捎带应答 面向字节流 粘包问题 TCP异常情况 TC…

【RTT驱动框架分析06】-pwn驱动框架分析+pwm驱动实现

pwm pwm应用程序开发 访问 PWM 设备API 应用程序通过 RT-Thread 提供的 PWM 设备管理接口来访问 PWM 设备硬件&#xff0c;相关接口如下所示&#xff1a; 函数描述rt_device_find()根据 PWM 设备名称查找设备获取设备句柄rt_pwm_set()设置 PWM 周期和脉冲宽度rt_pwm_enable…

橙河网络:2023年,我看谁还在做实体行业?

大家好&#xff0c;我是橙河老师&#xff0c;今天讲一讲实体行业。 现在实体行业还好干吗&#xff1f; 肯定是不好干了。 别的不扯&#xff0c;这几年很多大佬&#xff0c;能把老百姓干的事儿都干了。 一天收入上百万的演员&#xff0c;在直播间卖着九块九的东西&#xff0…

学习笔记-JVM-工具包(JVM分析工具)

常用工具 JDK工具 ① jps: JVM Process status tool&#xff1a;JVM进程状态工具&#xff0c;查看进程基本信息 ② jstat: JVM statistics monitoring tool &#xff1a; JVM统计监控工具&#xff0c;查看堆&#xff0c;GC详细信息 ③ jinfo&#xff1a;Java Configuration I…

MATLAB实现两组数据的延时对齐效果

博主在某次实验中&#xff0c;相同的实验条件下分别采集了两组数据&#xff0c;发现两组数据存在一个延时&#xff0c;如下图所示&#xff1a; 本文记录消除这个延时&#xff0c;实现相同数据状态的对齐效果&#xff0c;采用MATLAB自带的xcorr函数实现&#xff0c;具体步骤如下…

vteam透明屏,在场景化应用中,有哪些特点表现?

vteam透明屏是一种新型的显示技术&#xff0c;它采用透明材料制成&#xff0c;可以在显示内容的同时保持背景的透明度。 这种屏幕可以应用于各种领域&#xff0c;如广告、零售、展览等&#xff0c;具有很大的潜力和市场前景。 vteam透明屏的特点之一是其高透明度。与传统的显…

五、web应用程序技术——web功能

文章目录 一、服务器端功能1.1 SQL1.2 XML1.3 web服务 二、客户端功能2.1 HTML2.2 超链接2.3 表单2.4 CSS2.5 JavaScript2.6 文档对象模型2.7 Ajax2.8 JSON2.9 同源策略2.10浏览器拓展技术 一、服务器端功能 早期的web站点由各种静态资源组成&#xff0c;如HTML页面与图片。当用…