PHP 使用 PHPMailer 发送电子邮件

2024-04-18 01:36

本文主要是介绍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>

这篇关于PHP 使用 PHPMailer 发送电子邮件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/913421

相关文章

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格