PHP 使用 PHPMailer 发送电子邮件

news2025/1/18 8:59:16
1. PHPMailer 介绍

phpMailer 是一个非常强大的 php 发送邮件扩展包,可以设定发送邮件地址、回复地址、邮件主题、html邮件内容和上传附件等,使用起来非常方便。它目前有着有近 4 千万的下载量,是 PHP 开发者实现邮件发送功能的首选扩展包

它对 PHP 版本的要求也很低,只要 PHP 版本大于等于 5.5 就能使用,是一个非常优秀的邮件发送扩展包

Packagist 传送地址 : phpmailer/phpmailer - Packagist

 
  1. composer require phpmailer/phpmailer
2. 发送邮件代码示例

下面是发送邮件比较完整的代码,以 QQ邮箱作为 SMTP 服务器发送邮件

 
  1. use PHPMailer\PHPMailer\PHPMailer;
  2. use PHPMailer\PHPMailer\SMTP;
  3. use PHPMailer\PHPMailer\Exception;
  4. try {
  5. $mail = new PHPMailer(true);
  6. //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
  7. $mail->CharSet = 'UTF-8';
  8. # 服务器设置
  9. //启用详细调试输出
  10. //$mail->SMTPDebug = SMTP::DEBUG_SERVER;
  11. // 使用SMTP发送
  12. $mail->isSMTP();
  13. //要发送的SMTP服务器
  14. $mail->Host = 'smtp.qq.com';
  15. //启用SMTP身份验证
  16. $mail->SMTPAuth = true;
  17. //SMTP用户名
  18. $mail->Username = '754081611@qq.com';
  19. //SMTP密码
  20. $mail->Password = 'mftcnkcrrcixxxxx';
  21. //启用隐式TLS加密
  22. $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
  23. //要连接到的TCP端口
  24. $mail->Port = 465;
  25. #发件人信息
  26. $mail->setFrom('23426945@qq.com', '又拍云');
  27. #收件人列表,可将邮件发送给多个邮箱,命令格式:
  28. //$mail->addAddress('收件人邮箱', '姓名');
  29. $mail->addAddress('848978691@qq.com', '李知恩');
  30. $mail->addAddress('3276205785@qq.com', '灰太狼的羊');
  31. #回复地址
  32. $mail->addReplyTo('23426945@qq.com', '李钟硕');
  33. #抄送人列表
  34. $mail->addCC('itqaqcom@163.com', '你的欲梦');
  35. # 邮件内容
  36. //电子邮件格式设置为HTML
  37. $mail->isHTML(true);
  38. //邮件标题
  39. $mail->Subject = '又拍云密码重置校验';
  40. //邮件内容
  41. $code = mt_rand(100000, 999999);
  42. $mail->Body = "您的验证码为: <b>{$code}</b>";
  43. //这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用
  44. $mail->AltBody = "您的验证码为: {$code}";
  45. #发送邮件
  46. $mail->send();
  47. echo '邮件发送成功';
  48. } catch (\Exception $e) {
  49. // $e->getMessage() // 异常信息
  50. // $mail->ErrorInfo // 邮件发送失败错误信息
  51. echo "邮件发送失败: {$mail->ErrorInfo}";
  52. }
3. 邮件内容样式模板

邮件的内容一般都不是纯文本,会具有一定的样式,如下图所示,那么具有内容的样式应该怎么来做呢 ?

发送邮件时,邮件内容支持设置带有 HTML 标签,我们只需要传入带有样式的 HTML 内容

可以提前编写好样式,最后压缩为一行,部分内容作为变量(如: 验证码),然后作为邮件内容发送

在线压缩 HTML 代码 : Html在线美化压缩、转js - 在线工具

 
  1. <!-- 编写的样式 -->
  2. <style>
  3. .box {
  4. text-align: center;
  5. border: 1px solid red;
  6. padding: 15px 0;
  7. width: 450px;
  8. margin: 0 auto;
  9. }
  10. .title {
  11. color: red;
  12. font-weight: bold;
  13. text-align: center;
  14. margin-bottom: 10px;
  15. }
  16. </style>
  17. <div class="box">
  18. <div class="title">密码重置</div>
  19. <div class="code">验证码: 123456</div>
  20. </div>
  21. <!-- 压缩后 -->
  22. <style>.box{text-align:center;border:1px solid red;padding:15px 0;width:450px;margin:0 auto}.title{color:red;font-weight:700;text-align:center;margin-bottom:10px}</style><div class="box"><div class="title">密码重置</div><div class="code">验证码: 123456</div></div>

当我们不想自己编写邮件内容模板样式时,可以扒取其他平台的邮件模板

扒取又拍云邮件模板举例 : 我要做一个通过邮件找回密码的功能,又不想自己写这个邮件模板样式,于是我找到 又拍云 的重置密码邮件模板,扒取下来,在它的基础上进行修改,省时省力,何乐而不为

在又拍云平台重置密码,得到一个重置密码的邮件,在控制台查看元素可发现:邮件内容为下图所标记的部分,将元素复制出来后进行修改即可

4. 验证码邮件模板

又拍云验证码模板

 
  1. <div style="padding: 66px 0; width: 100%; background-color: #ededed; color: #777;" align="center">
  2. <div style="width: 700px; background-color: #fff; text-align: left;margin: 0 auto;padding: 20px 0;">
  3. <div style="margin: 30px 60px; width:580px; ">
  4. <strong>亲爱的 duxiu,</strong>
  5. <p style="font-size: 14px; color: #777; line-height: 26px;">您正在通过邮件找回又拍云密码。</p>
  6. <p style="font-size: 14px; color: #777; line-height: 26px;">请在重置密码的页面中输入以下 <strong>验证码</strong>
  7. 和新的密码,完成密码重设:</p>
  8. <p
  9. style="font-size: 20px; color: #777; line-height: 50px; border: 1px solid #24b0cf; background: #fafafa; text-align: center;">
  10. <span style="color: #24b0cf; font-weight: bold;">657475</span>
  11. </p>
  12. <p style="font-size: 14px; color: #aaa; line-height: 16px;">(此验证码有效时间为 60 分钟,若超时请重新获取邮件) </p>
  13. <p style="font-size: 14px; color: #777; line-height: 26px;">如果您要放弃重设密码,或者未曾申请密码重设,请忽略此邮件。</p>
  14. <p style="font-size: 14px; color: #777; line-height: 26px;">
  15. <strong>为了您的账户安全,请您注意对此邮件内容保密。</strong>
  16. </p>
  17. </div>
  18. </div>
  19. </div>

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

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

相关文章

阅读小程序|基于微信阅读网站小程序的系统设计与实现(源码+数据库+文档)

目录 基于微信阅读网站小程序 一、前言 二、系统设计 三、系统功能设计 小程序端&#xff1a; 后台 管理员进入指定功能操作区之后可以管理图书订单。其页面见下图。管理员审核订单&#xff0c;查看订单是否支付&#xff0c;为购买图书的用户推送对应的章节。 管理员进…

西瓜书学习——第一、二章笔记

[] 什么是机器学习? 研究关于“学习算法”(一类能从数据中学习出其背后潜在规律的算法)的一门学科。 PS:深度学习指的是神经网络那一类学习算法&#xff0c;因此是机器学习的子集。 假设空间和版本空间 举个栗子:假设现已收集到某地区近几年的房价和学校数量数据&#xf…

【基础物理实验】【AFM虚拟实验】基于AFM的物质表面微观结构及力学性质表征仿真实验(下)【北京航空航天大学】

本次实验&#xff08;上&#xff09;见博客&#xff1a;【基础物理实验】【AFM虚拟实验】基于AFM的物质表面微观结构及力学性质表征仿真实验&#xff08;上&#xff09;【北京航空航天大学】 本次实验&#xff08;中&#xff09;见博客&#xff1a;【基础物理实验】【AFM虚拟实…

『哈哥赠书 - 51期』-『数字风控体系:设计与实践』

⭐️ 赠书 - 《数字风控体系&#xff1a;设计与实践》 ⭐️ 数字风控概述 从2007年开始到2014年左右&#xff0c;高速移动网络和智能手机迅速在大众中普及&#xff0c;开启了移动互联网时代。在这个背景下&#xff0c;企业的产品与服务也出现了两个重要的趋势。 第一个趋势是…

(十三)C++自制植物大战僵尸游戏多用户存档实现(二)

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs UserData.h 在头文件中定义了枚举类型openUserDataReturnType&#xff0c;用于表示打开用户数据文件的返回状态。FileExistError表示文件存在但是打开错误&#xff0c;FileExistCorrect表示文件在且正确&#xff0…

活动理论的散点图

import pandas as pd import matplotlib.pyplot as plt# 假设您已经有一个名为 data.xlsx 的 Excel 文件 # 您可以使用以下代码读取数据# 读取 Excel 文件 try:data pd.read_excel(data.xlsx) except Exception as e:print(f"Error: {e}")# 假设您的数据包含以下列:…

2024 OceanBase开发者大会:专场论坛亮点抢先看

4 月 20 日&#xff0c;2024 OceanBase 开发者大会将在上海闵行区漕宝路 3199 号宝龙艾美酒店召开。 此次盛会专为开发者们量身打造&#xff0c;OceanBase诚挚邀请了来自不同行业的最佳实践用户、业界享有盛誉的技术专家&#xff0c;以及OceanBase数据库领域的精英们齐聚一堂。…

线程池学习(通俗易懂)

线程池 线程池是什么ThreadPoolExecutor模拟实现线程池结语 线程池是什么 假设我们要频繁的创建线程和销毁线程,但是创建线程和销毁线程是有成本的. 所以我们可以提前创建一批线程,后面需要使用的时候,直接拿就可以了,这就是线程池. 当线程不再使用的时候,就归还到池子里.为什…

软考131-上午题-【软件工程】-软件可靠性、可用性、可维护性

可靠性、可用性和可维护性是软件的质量属性&#xff0c;软件工程中&#xff0c;用 0-1 之间的数来度量。 0.66 66% 1、 可靠性 可靠性是指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。 可以用 MTTF/ (1MTTF) 来度量&#xff0c;其中 MTTF 为平均无故障时间…

算法练习第18天|111.二叉树的最小深度

111.二叉树的最小深度 111. 二叉树的最小深度 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/minimum-depth-of-binary-tree/description/ 题目描述&#xff1a; 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最…

vue3 vueUse 连接蓝牙

目录 vueuse安装&#xff1a; useBluetooth: 调用蓝牙API 扫描周期设备 选择设备配对 连接成功 vue3的网页项目连接电脑或者手机上的蓝牙设备&#xff0c;使用vueUse库&#xff0c;可以快速检查连接蓝牙设备。 vueUse库使用参考&#xff1a; VueUse工具库 常用api-CSDN…

【代码】Python3|Requests 库怎么继承 Selenium 的 Headers (2024,Chrome)

本文使用的版本&#xff1a; Chrome 124Python 12Selenium 4.19.0 版本过旧可能会出现问题&#xff0c;但只要别差异太大&#xff0c;就可以看本文&#xff0c;因为本文对新老版本都有讲解。 文章目录 1 难点解析和具体思路2 注意事项2.1 PDF 资源获取时注意事项2.2 Capabiliti…

接口防盗刷的方法有哪些?

在工作中&#xff0c;曾经遇到过一个手机号一天发送上百次验证码得情况&#xff0c;这种明显是出问题了&#xff0c;那怎么解决和防范呢&#xff1f; 这是一个非常有意思的问题&#xff0c;防范措施挺多的。今天这篇文章专门跟大家一起聊聊&#xff0c;希望对你会有所帮助。 1…

固定测斜仪:工程观测的精密利器

在工程观测测量领域&#xff0c;固定测斜仪扮演着至关重要的角色。固定测斜仪&#xff0c;凭借其耐冲击型倾斜传感器、出色的可靠性、快速稳定的特点&#xff0c;以及简洁的安装和智能识别功能&#xff0c;已成为行业内重要工具。其输出信号为RS485数字量&#xff0c;可直接显示…

进行接口测试时,连接数据库,对数据源进行备份、还原、验证操作

进行接口测试时&#xff0c;我们需要连接到数据库中&#xff0c;对数据源进行备份、还原、验证等操作。 一、Python连接数据库常见模块 MysqlDBpython2时代最火的驱动库。基于C开发&#xff0c;对windows平台不友好。现在已经进入python3时代&#xff0c;基本不再使用MysqlCl…

OPC-UA是这样在食品和饮料中应用的

什么是 OPC-UA OPC Unified Architecture&#xff0c;即 OPC-UA&#xff0c;是一种基于 TCP/IP 的协议&#xff0c;用于自动化工程师实时、高可靠性、高效性地在控制系统级别共享数据。 OPC-UA 的特点 安全通信: OPC-UA 使用先进的加密方法和严格的访问控制&#xff0c;确保数…

基于STM32的交通灯(OLED屏显示倒计时)的Proteus仿真

文章目录 一、前言二、交通灯1.题目要求2.思路3.画图正常情况模拟故障情况 4.软件 三、总结 一、前言 最近下载了Proteus仿真软件&#xff0c;闲来无事也试试画一个简单的仿真图。 有需要软件的朋友可以去我的另外一篇博客下载和安装。 自用Proteus(8.15)仿真下载安装过程&a…

C++进阶(2)-函数

目录 一、函数提高 1.1函数默认参数 1.2函数占位参数 1.3函数重载 1.3.1函数重载概述 1.3.2函数重载注意事项 二、类和对象 2.1封装 2.1.1封装的意义 2.1.2struct和class区别 2.1.3成员属性设置为私有 2.1.4封装案例 2.2对象的初始化和清理 2.2.1构造函数和析构函数 …

数据大爆炸:WordCount程序的多元化执行方式

文章目录 主要内容1.左方工作区右键New,选择Map文件2.再创建mymap,myreducer,mywordcount类&#xff1a;3.打包在linux中运行&#xff0c;注意处理的文件式完全分布式文件3.1打jar包步骤&#xff1a; 4.完成内容 主要内容 尝试使用不同的方式运行wordcount程序。 1&#xff09…

去哪网拿去花不能提现,只能用于透支消费,那么拿去花提现是怎么实现呢?

去哪网拿去花不能提现&#xff0c;只能用于透支消费&#xff0c;那么拿去花提现是怎么实现呢&#xff1f; 申请携程拿去花之后&#xff0c;有一些人就会想着把钱提现出来拿去用。一般来说&#xff0c;他们都是通过线下门店来提现拿去花&#xff0c;拿去花允许用户先消费后付款&…