PHP 使用 PHPMailer 发送电子邮件

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.mzph.cn/news/825045.shtml

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

相关文章

12.基础乐理-半音、全音

音是有高有底的&#xff0c;音的震动频率越高、音的赫兹越高&#xff0c;我们就说这个音越高&#xff0c;钢琴从左到右&#xff0c;音是逐渐变高的&#xff0c;因变高&#xff0c;它的频率&#xff0c;Hz数是在增加的&#xff0c;如下图&#xff1a; 但是赫兹它动不动就是几百几…

NPL预训练模型-GPT-3

简介及特点 GPT-3是一个由OpenAI开发的自然语言处理&#xff08;NLP&#xff09;预训练模型&#xff0c;它是生成式预训练变换器&#xff08;Generative Pretrained Transformer&#xff09;系列的第三代模型。GPT-3以其巨大的规模和强大的语言处理能力而闻名&#xff0c;具有…

爬虫 | 基于 Python 实现有道翻译工具

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本项目旨在利用 Python 语言实现一个简单的有道翻译工具。有道翻译是一款常用的在线翻译服务&#xff0c;能够实现多种语言的互译&#xff0c;提供高质量的翻译结果。 目录 一、项目功能 二、注意事项 三、代码解析 1. 导入…

DC-9渗透测试复现

DC-9渗透测试复现 目的&#xff1a; 获取最高权限以及flag 过程&#xff1a; 信息打点--sql注入- 文件包含漏洞-Knockd开门开启ssh连接-hyjra爆破-sudo提权(文件追加) 环境&#xff1a; 攻击机&#xff1a;kali(192.168.85.137) 靶机&#xff1a;DC_3(192.168.85.141) …

javaswing + mysql通讯录

javaswingaddressbook 需要代码私聊

结构体及应用;结构体指针及应用;union、enum、typedef三个关键字

结构体及应用 参考文章链接&#xff1a;https://blog.csdn.net/zw1996/article/details/53844585结构体的声明 结构体的初始化 注意如果在定义结构体变量的时候没有初始化&#xff0c;那么后面就不能全部一起初始化了。 /这样是可以的&#xff0c;在定义变量的时候就初始化了…

(十四)C++自制植物大战僵尸游戏windows平台视频播放实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs VLC库 在Cocos2d-x游戏开发框架中&#xff0c;没有实现windows平台视频播放的功能&#xff0c;需要自定义实现。在本项目中使用vlc库实现windows平台的视频播放功能。 vlc官网&#xff1a;网址 下载完成后&#x…

虚幻引擎源码版安装下载,点击GenerateProjectFiles.bat报错 error NU1101NuGet包问题解决参考方案

开发环境配置与源码安装使用 安装VS2022 按照官方文档安装需要的vs配置 虚幻引擎源代码下载 Epic里面下载的引擎与源代码引擎区别&#xff1a;Epic里面下载的引擎是已经编译过的它的源代码访问权限不完整&#xff0c;源代码版本提供比较完整引擎代码&#xff0c;并且可以修…

MDK stm32怎么生成bin文件

第一种 D:\Keil_v5\ARM\ac5.6\bin\fromelf.exe --bin -o ../../Output/atk_f407.bin ../../Output/atk_f407.axf 空格解析 D:\Keil_v5\ARM\ac5.6\bin\fromelf.exe一个空格--bin一个空格-o两个空格../../Output/atk_f407.bin ../../Output/atk_f407.axf &#xff08;注意后…

ELK,ELFK日志收集分析系统

ELK简介 ELK是一套完整的日志集中处理解决方案&#xff0c;将ElasticSearch&#xff0c;Logstash和Kibana三个开源工具配合使用&#xff0c;实现用户对日志的查询、排序、统计需求。 ELK工作原理 在所有需要收集日志的服务器上部署Logstash&#xff0c;或者先将日志进行集中…

c# .net 香橙派 Orangepi GPIO高低电平、上升沿触发\下降沿触发 监听回调方法

c# .net 香橙派GPIO高低电平、上升沿触发\下降沿触发 监听回调方法 通过gpio readall 查看 gpio编码 这里用orangepi zero3 ,gpio= 70为例 当gpio 70 输入高电平时,触发回调 c# .net 代码 方法1: Nuget 包 System.Device.Gpio ,微软官方库对香橙派支持越来越好了,用得…

SpringBoot多数据源(二)

SpringBoot多数据源AbstractRoutingDataSource&#xff08;二&#xff09; 1.多数据源配置2.多数据源调用流程3.实现 1.多数据源配置 spring-jdbc模块提供AbstractRoutingDataSource,其内部可以包含了多个DataSource&#xff0c; 然后在运行时来动态的访问数据库 2.多数据源…

【Python系列】查看虚拟环境信息和包大小

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Java基于SpringBoot+Vue的蜗牛兼职网系统的研究与实现

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

CSS-布局

display display 属性是用于控制 布局 的最重要的 CSS 属性。display 属性规定是否/如何显示元素。 每个 HTML 元素都有一个默认的 display 值&#xff0c;具体取决于它的元素类型。大多数元素的默认 display 值为 block 或 inline。 block block&#xff1a;块级元素。块级…

越来越多服务区安装智慧公厕是什么原因

随着社会的不断发展&#xff0c;人们对生活质量的要求也越来越高。在这种背景下&#xff0c;越来越多的服务区开始安装智慧公厕&#xff0c;以满足人们在出行过程中的生活需求。那么&#xff0c;为什么越来越多的服务区选择安装智慧公厕呢&#xff1f;这其中究竟有哪些原因呢&a…

你信不信,五分钟快速学习Nginx

Nginx是什么&#xff1f; Nginx 是一个高性能的HTTP和反向代理服务器。它是由俄罗斯程序员Igor Sysoev开发的&#xff0c;最初是为了解决俄罗斯大型的门户网站的高流量问题。 说到反向代理&#xff0c;那么有没有正向代理呢&#xff1f; 正向代理&#xff1a;客户端非常明确要…

Swift Publisher 5 for mac:打造精美版面

Swift Publisher 5 for mac&#xff1a;打造精美版面 Swift Publisher 5是一款专业的版面设计和编辑工具&#xff0c;为Mac用户提供了强大的设计功能和直观的操作界面。以下是关于Swift Publisher 5的功能介绍&#xff1a; 直观易用的界面&#xff1a;用户能够轻松地使用Swift …

每日两题 / 189. 轮转数组 560. 和为 K 的子数组(LeetCode热题100)

189. 轮转数组 - 力扣&#xff08;LeetCode&#xff09; 向右轮转将使尾部k个元素顶到头部 将整个数组反转&#xff0c;再分别反转前k个元素和剩下的元素即可 class Solution { public:void rotate(vector<int>& nums, int k) {k % nums.size();reverse(nums.begi…

C# 自动填充文字内容到指定图片

目录 需求 开发运行环境 方法设计 实现代码 AddText方法 图片转Base64 调用示例 小结 需求 在我们的一些发布系统项目应用中&#xff0c;会经常发布一些链接图标&#xff0c;该图标基本上以模板背景为主&#xff0c;并填充项目文字内容。解决方式一般会让美工进行制作…