wsw/phpmailer

PHPMailer 修改版,支持接收两个 DKIM 密钥

5.2.15 2016-02-21 11:15 UTC

This package is auto-updated.

Last update: 2024-08-29 04:19:35 UTC


README

PHPMailer

PHPMailer - PHP 邮件创建和传输类,功能齐全

构建状态:Build Status Scrutinizer Quality Score Code Coverage

Latest Stable Version Total Downloads Latest Unstable Version License

类功能

  • 可能是世界上发送电子邮件最流行的 PHP 代码!
  • 被许多开源项目使用:WordPress、Drupal、1CRM、SugarCRM、Yii、Joomla! 等等
  • 集成 SMTP 支持 - 无需本地邮件服务器即可发送邮件
  • 发送带有多个 TO、CC、BCC 和 REPLY-TO 的电子邮件
  • 支持多部分/替代电子邮件,适用于不支持 HTML 邮件的邮件客户端
  • 支持 UTF-8 内容和 8bit、base64、二进制和 quoted-printable 编码
  • 通过 SSL 和 TLS 传输支持 SMTP 身份验证的 LOGIN、PLAIN、NTLM、CRAM-MD5 和 Google 的 XOAUTH2 机制
  • 47 种语言的错误信息!
  • 支持 DKIM 和 S/MIME 签名
  • 与 PHP 5.0 及更高版本兼容
  • 更多功能!

为什么你可能需要它

许多 PHP 开发者在其代码中利用电子邮件。唯一支持此功能的 PHP 函数是 mail() 函数。然而,它不提供任何使用基于 HTML 的电子邮件和附件等流行功能的支持。

正确格式化电子邮件非常困难。存在许多重叠的 RFC,需要严格遵守复杂的格式化和编码规则 - 你在网上找到的大多数直接使用 mail() 函数的代码都是错误的! 不要被诱惑自己来做这件事 - 如果你不使用 PHPMailer,在创建自己的之前,应该查看许多其他优秀的库 - 尝试 SwiftMailer、Zend_Mail、eZcomponents 等。

PHP 的 mail() 函数通常通过本地邮件服务器发送,通常由 Linux、BSD 和 OS X 平台上的 sendmail 二进制文件提供前端,然而,Windows 通常不包含本地邮件服务器;PHPMailer 的集成 SMTP 实现将允许在 Windows 平台上发送电子邮件,而无需本地邮件服务器。

许可证

本软件采用 LGPL 2.1 许可证发布。请阅读 LICENSE 了解有关软件可用性和分发的信息。

安装与加载

PHPMailer 通过 Composer/Packagist(使用语义版本)提供,所以只需将此行添加到你的 composer.json 文件中

"wsw/phpmailer": "~5.2"

composer require wsw/phpmailer

如果你想使用 Gmail XOAUTH2 认证类,你还需要添加对 league/oauth2-client 包的依赖。

或者,将 PHPMailer 文件夹的内容复制到 PHP 配置中指定的 include_path 目录之一中。如果你不熟悉 git 或只想获取压缩包,请点击 GitHub 页面顶部的 'zip' 按钮。

如果您不使用Composer的自动加载器,PHPMailer提供了一个与SPL兼容的自动加载器,这是加载库的首选方式——只需require '/path/to/PHPMailerAutoload.php';,一切应该都会正常工作。如果自动加载器找不到类,它不会抛出错误,而是将自己添加到SPL列表的开头,这样您的(或您的框架的)自动加载器就可以捕获错误。SPL自动加载是在PHP 5.1.0中引入的,因此如果您使用的是该版本之前的版本,您需要手动要求/包含每个类。

PHPMailer没有声明命名空间,因为命名空间是在PHP 5.3中引入的。

如果您想使用Google的XOAUTH2身份验证机制,您至少需要运行PHP 5.4,并加载在composer.json中列出的依赖项。

最小安装

虽然手动或使用Composer安装整个包很简单、方便且可靠,但您可能只想在项目中包含必要的文件。至少您需要class.phpmailer.php。如果您使用SMTP,则需要class.smtp.php,如果您使用POP-before SMTP,则需要class.pop3.php。对于所有这些,我们建议您也使用自动加载器,否则您将不得不手动require所有类或使用其他自动加载器。如果您不向用户显示错误,并且可以仅使用英语错误,则可以跳过语言文件夹。如果您正在使用包括NTLM身份验证和ics生成在内的那些功能,则可能还需要在extras文件夹中的附加类。如果您使用Google XOAUTH2,还需要class.phpmaileroauth.phpclass.oauth.php类以及Composer依赖项。

一个简单的例子

<?php
require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

//$mail->SMTPDebug = 3;                               // Enable verbose debug output

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;smtp2.example.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'user@example.com';                 // SMTP username
$mail->Password = 'secret';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;                                    // TCP port to connect to

$mail->setFrom('from@example.com', 'Mailer');
$mail->addAddress('joe@example.net', 'Joe User');     // Add a recipient
$mail->addAddress('ellen@example.com');               // Name is optional
$mail->addReplyTo('info@example.com', 'Information');
$mail->addCC('cc@example.com');
$mail->addBCC('bcc@example.com');

$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

您可以在examples文件夹中找到更多可以玩的内容。

就这些了。现在您应该准备好使用PHPMailer了!

本地化

PHPMailer默认使用英语,但在语言文件夹中,您可以找到许多(写作时为46个!)PHPMailer可能遇到的错误消息的翻译。它们的文件名包含ISO 639-1语言代码,例如fr代表法语。要指定语言,您需要告诉PHPMailer使用哪种语言,如下所示

// To load the French version
$mail->setLanguage('fr', '/optional/path/to/language/directory/');

我们欢迎更正和新语言——如果您正在寻找要做的更正,请在测试文件夹中运行phpmailerLangTest.php脚本,它将显示任何缺失的翻译。

文档

如何在常见的场景中使用PHPMailer的示例可以在examples文件夹中找到。如果您正在寻找一个好的起点,我们建议您从Gmail示例开始。

GitHub wiki中有技巧和故障排除指南。如果您遇到问题,这应该是您首先查看的地方,因为它是最频繁更新的。

完整的API文档可在网上查阅:在线文档

您可以在docs文件夹中找到一些基本用户文档,并且可以使用docs文件夹中的generatedocs.sh脚本生成完整的API级别文档,但您需要先安装PHPDocumentor。您可能会发现单元测试是了解如何进行加密等各种操作的好来源。

如果文档没有涵盖您所需的内容,请在Stack Overflow上的许多问题中进行搜索,并且在您询问关于“SMTP错误:无法连接到SMTP主机”的问题之前,请先阅读故障排除指南

测试

test文件夹中有一个PHPUnit测试脚本。

构建状态:Build Status

如果构建没有通过,您能做些什么来帮助吗?

贡献

请将错误报告、建议和拉取请求提交到GitHub问题跟踪器

我们特别关注解决边缘案例、扩展测试覆盖范围和更新翻译。

随着PHPMailer迁移到GitHub组织,您需要使用以下命令从您的克隆中更新引用旧GitHub位置的任何远程URL

git remote set-url upstream https://github.com/PHPMailer/PHPMailer.git

不要再使用SourceForge或Google Code项目。

赞助

PHPMailer的开发时间和资源由Smartmessages.net提供,这是一个强大的电子邮件营销系统。

Smartmessages email marketing

我们欢迎接收其他形式的贡献,无论是啤酒🍺、T恤👕、亚马逊愿望清单抢购,还是冷硬现金💰。

变更日志

请参阅变更日志

历史

  • PHPMailer最初由Brent R. Matzelle于2001年编写,作为SourceForge项目
  • Marcus Bointon(SF上的coolbru)和Andy Prevost(codeworxtech)于2004年接管了该项目。
  • 2010年成为Google Code上的Apache孵化器项目,由Jim Jagielski管理。
  • Marcus在GitHub上创建了其分支。
  • Jim和Marcus决定联手,将GitHub作为PHPMailer的官方和规范仓库。
  • PHPMailer迁移到GitHub上的PHPMailer组织

从SourceForge迁移后有哪些变化?

  • SourceForge和Google Code项目的官方继任者。
  • 测试套件。
  • 与Travis-CI的持续集成。
  • Composer支持。
  • 公共开发。
  • 额外的语言和语言字符串。
  • 支持CRAM-MD5身份验证。
  • 保留作者、提交和分支的完整仓库历史记录。