PHPMailer

关注
义项:PHP邮件发送库
PHPMailer

PHPMailer 是一个用 PHP 编写的电子邮件创建与传输类库,开发者可以在 Web 服务器上通过它调用邮件发送功能,把邮件投递到邮件提交代理。[1] 它集成了 SMTP 客户端,无需本地邮件服务器即可发信,并支持 HTML 正文、附件、多种编码与加密方式。[2] 由于 PHP 自带的 mail() 函数在认证、附件和 HTML 邮件方面缺乏支持,该类库自 2001 年出现后成为 PHP 生态中使用较广的发信方案之一。

百科 图文
目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

PHPMailer 是一套面向 PHP 语言的电子邮件创建与传输类,主要用途是把 Web 服务器上生成的邮件通过 SMTP 协议投递给邮件服务器。[1] 它以类库形式提供,开发者通过实例化对象并设置服务器地址、账号、收件人和正文等属性来完成发信。[3] 与 PHP 内置的 mail() 函数相比,它额外提供了加密、认证、HTML 邮件和附件等常见能力的封装。

原理

该类库的核心是一个内置的 SMTP 客户端。当脚本调用发送方法时,PHPMailer 会与指定的 SMTP 服务器建立 TCP 连接,按 SMTP 协议完成握手、身份验证、信封声明、数据传输等步骤,最后把邮件内容交给服务器转发。[2] 服务器地址、端口和加密方式由开发者配置,隐式 TLS 与 STARTTLS 两种传输方式都受支持。[3]

因为 PHP 的 mail() 通常依赖本地 sendmail 程序,在缺少本地邮件服务器的平台上无法直接工作,而内置 SMTP 客户端使得各类操作系统上都能发信。[2] 邮件正文与附件按 MIME 规范生成,正文可同时给出 HTML 版本和纯文本版本,编码支持 UTF-8 以及 8bit、base64、quoted-printable 等方案。 该类库还会自动校验收件地址格式,并对邮件头注入进行防护。[3]

发展历程

PHPMailer 最初由 Brent R. Matzelle 于 2001 年编写,并以 SourceForge 项目的形式发布。[1] 最早的版本号为 0.90,采用 phpmailer.inc.php 这样的文件命名,其中的 SMTP 部分由 Chris Ryan 编写。[4] 到 1.73 版为止,项目由 Matzelle 主导;2007 年 Andy Prevost 接手维护,并在同年推出 2.0.0rc1。[4]

2009 年发布的 5.0.0 版启用了新的版本编号体系,代码改为完全面向对象并引入异常处理,以区别于面向 PHP 4 的旧版本。[5] 2010 年该项目成为 Google Code 上由 Jim Jagielski 管理的 Apache 孵化器项目,2012 年 Marcus Bointon 加入管理团队,随后项目仓库迁至 GitHub,并转入 PHPMailer 组织。[1] 2016 年末,该类库被披露存在一处严重安全缺陷,相关补丁发布了两轮。[1]

6.x 系列将源码移入 src 目录,并启用 PHPMailer\PHPMailer 命名空间,以降低类名冲突风险;5.2 系列则不再获得支持,连安全更新也已停止。[2] 软件以 GNU 宽通用公共许可证 2.1 版分发,并随附 GPL 合作承诺。[2]

应用

PHPMailer 的典型用途是在 Web 应用中发送注册确认、密码重置、订单通知一类的自动邮件。[2] 它被多个开源项目采用,例如 WordPress、Drupal、SugarCRM、Yii 和 Joomla。[6]

在部署方式上,官方推荐的安装途径是通过 Composer 从 Packagist 拉取 phpmailer/phpmailer 包;如果不使用 Composer,也可以下载源码后手动引入 PHPMailer.php、SMTP.php、Exception.php 等文件。[2] 若要通过 Gmail 等服务使用 XOAUTH2 认证,还需要额外引入 league/oauth2-client 依赖。[2] 该库支持 LOGIN、PLAIN、CRAM-MD5 和 XOAUTH2 等 SMTP 认证机制,并提供 DKIM 与 S/MIME 签名能力。[6] 在部分 Linux 发行版中,它以 libphp-phpmailer 之类的系统软件包形式提供。

局限

PHPMailer 只负责邮件的构造与投递,不负责把邮件送入收件人的收件箱,实际送达仍取决于所用 SMTP 服务器的信誉与配置。[2] 邮件格式与编码相关的标准繁多且互相重叠,使用该类库可以降低出错概率,但并不等于自动符合所有规范。[2]

5.2 系列已停止维护,仅停留在该版本的项目无法获得安全修复,使用较新 PHP 版本时需升级到后续发行版。[2] 从 5.2 升级到 6.x 涉及源码目录结构与命名空间的变化,需要按升级指南调整调用代码。[2] 此外,XOAUTH2 认证会引入额外的 Composer 依赖,缺少 Composer 或包管理受限的环境需要改用其他加载方式。[2]

参见

  • SMTP —— 该类库内置客户端所实现的邮件传输协议。

  • PHP —— PHPMailer 所依托的编程语言。

  • WordPress —— 采用该类库发送邮件的开源内容管理系统之一。

  • Composer —— 安装和管理该类库所依赖的 PHP 包管理工具。

参考资料

  1. PHPMailer [引用日期2026-10-14]
  2. phpmailer/phpmailer [引用日期2026-10-14]
  3. phpmailer/phpmailer [引用日期2026-10-14]
  4. History [引用日期2026-10-14]
  5. moodle [引用日期2026-10-14]
  6. php-phpmailer6-6.9.1-3.fc41.noarch.rpm [引用日期2026-10-14]
词条评价
词条统计

浏览次数:3 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-13T21:25:15Z

历史版本

本条目引用的词条
SMTP WordPress PHP Composer