ikkira / phpmailer-utf8
PHPMailer 是一个功能齐全的 PHP 邮件创建和传输类
Requires
- php: >=5.5.0
- ext-ctype: *
- ext-filter: *
Requires (Dev)
- doctrine/annotations: 1.2.*
- friendsofphp/php-cs-fixer: ^2.2
- phpdocumentor/phpdocumentor: 2.*
- phpunit/phpunit: ^4.8 || ^5.7
- zendframework/zend-eventmanager: 3.0.*
- zendframework/zend-i18n: 2.7.3
- zendframework/zend-serializer: 2.7.*
Suggests
- ext-mbstring: Needed to send email in multibyte encoding charset
- hayageek/oauth2-yahoo: Needed for Yahoo XOAUTH2 authentication
- league/oauth2-google: Needed for Google XOAUTH2 authentication
- psr/log: For optional PSR-3 debug logging
- stevenmaguire/oauth2-microsoft: Needed for Microsoft XOAUTH2 authentication
- symfony/polyfill-mbstring: To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)
- dev-master
- 6.0.x-dev
- v6.0.6
- v6.0.5
- v6.0.4
- v6.0.3
- v6.0.2
- v6.0.1
- v6.0.0
- v6.0.0rc5
- v6.0.0rc4
- v6.0.0rc3
- v6.0.0rc2
- v6.0.0rc1
- v5.2.27
- v5.2.26
- v5.2.25
- v5.2.24
- v5.2.23
- v5.2.22
- v5.2.21
- v5.2.20
- v5.2.19
- v5.2.18
- v5.2.17
- v5.2.16
- v5.2.15
- v5.2.14
- v5.2.13
- v5.2.12
- v5.2.11
- v5.2.10
- v5.2.9
- v5.2.8
- v5.2.7
- v5.2.6
- v5.2.5
- v5.2.4
- v5.2.2
- dev-5.2-stable
- dev-6.0-ical
This package is auto-updated.
Last update: 2024-09-19 20:21:23 UTC
README
PHPMailer - PHP 的全功能邮件创建和传输类
类功能
- 可能是世界上发送电子邮件最流行的 PHP 代码!
- 被许多开源项目使用:WordPress、Drupal、1CRM、SugarCRM、Yii、Joomla! 以及更多
- 集成 SMTP 支持 - 无需本地邮件服务器即可发送邮件
- 支持发送包含多个收件人、抄送、密送和回复地址的邮件
- 适用于不支持 HTML 邮件客户端的多部分/替代电子邮件
- 添加附件,包括内联附件
- 支持 UTF-8 内容和 8bit、base64、二进制和 quoted-printable 编码
- 通过 SSL 和 SMTP+STARTTLS 传输支持 SMTP 认证,使用 LOGIN、PLAIN、CRAM-MD5 和 XOAUTH2 机制
- 自动验证电子邮件地址
- 防止头注入攻击
- 支持超过 50 种语言的错误信息!
- 支持 DKIM 和 S/MIME 签名
- 与 PHP 5.5 及更高版本兼容
- 使用命名空间以防止名称冲突
- 更多功能!
为什么你需要它
许多 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可在Packagist上找到(使用语义版本控制),并通过Composer安装是推荐的方式。只需将以下行添加到您的composer.json
文件中:
"phpmailer/phpmailer": "~6.0"
或者执行:
composer require phpmailer/phpmailer
请注意,vendor
文件夹和vendor/autoload.php
脚本是由Composer生成的;它们不是PHPMailer的一部分。
如果您想使用Gmail XOAUTH2身份验证类,您还需要在composer.json
中添加对league/oauth2-client
包的依赖。
另外,如果您不使用Composer,可以将PHPMailer文件夹的内容复制到PHP配置中指定的include_path
目录之一中,并手动加载每个类文件。
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'path/to/PHPMailer/src/Exception.php'; require 'path/to/PHPMailer/src/PHPMailer.php'; require 'path/to/PHPMailer/src/SMTP.php';
如果您没有显式使用SMTP
类(您可能没有),则不需要为SMTP类添加use
行。
如果您不熟悉git或者只想得到一个压缩包,请点击GitHub项目页面右侧的'zip'按钮,但请注意,压缩包中不包括文档和示例。
旧版本
PHPMailer 5.2(与PHP 5.0 - 7.0兼容)不再提供功能更新支持,今后只会接收安全更新。您可以在5.2-stable分支中找到5.2的最新版本,5.2的未来版本将带有5.2.x版本号,因此现有的Composer配置应继续有效。如果您使用PHP 5.5或更高版本,我们建议您进行必要的更改以切换到6.0版本。
5.2分支将在2018年12月31日之后不再接收安全更新。
从5.2升级
最大的变化是源文件现在位于src/
文件夹中,PHPMailer现在声明了命名空间PHPMailer\PHPMailer
。这有几个重要的影响——阅读升级指南以获取更多详细信息。
最小安装
虽然手动或使用Composer安装整个包很简单、方便且可靠,但您可能只想在项目中包含关键文件。至少您需要src/PHPMailer.php。如果您使用SMTP,则需要src/SMTP.php,如果您使用POP-before SMTP,则需要src/POP3.php。如果您不向用户显示错误(并且可以使用英文错误即可),则可以跳过language文件夹。如果您使用XOAUTH2,还需要src/OAuth.php以及您要验证的服务所需的Composer依赖项。实际上,使用Composer要简单得多!
一个简单的示例
<?php // Import PHPMailer classes into the global namespace // These must be at the top of your script, not inside a function use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; //Load Composer's autoloader require 'vendor/autoload.php'; $mail = new PHPMailer(true); // Passing `true` enables exceptions try { //Server settings $mail->SMTPDebug = 2; // 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 //Recipients $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'); //Attachments $mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name //Content $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'; $mail->send(); echo 'Message has been sent'; } catch (Exception $e) { echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo; }
您可以在examples文件夹中找到更多可玩的内容。
就是这样。现在您应该可以使用PHPMailer了!
本地化
PHPMailer默认为英文,但在language文件夹中,您可以找到许多(撰写时为48个!)您可能遇到的PHPMailer错误信息的翻译。它们的文件名包含ISO 639-1语言代码,例如fr
代表法语。要指定语言,您需要告诉PHPMailer使用哪种语言,如下所示:
// To load the French version $mail->setLanguage('fr', '/optional/path/to/language/directory/');
我们欢迎纠正和新语言的支持 - 如果你正在寻找要进行的纠正,请在测试文件夹中运行 PHPMailerLangTest.php 脚本,它将显示任何缺少的翻译。
文档
请从GitHub wiki开始阅读。如果你遇到困难,这里应该是你首先查看的地方,因为这是更新最频繁的。
PHPMailer在常见场景中的使用示例可以在examples文件夹中找到。如果你在寻找一个好的起点,我们建议你从Gmail示例开始。
请注意,为了减少PHPMailer部署代码的大小,如果你通过Composer或通过GitHub的zip文件下载加载PHPMailer,则不再包含示例,因此你需要克隆git仓库或使用上述链接直接访问示例。
完整的生成API文档可在网上找到。
您可以通过在顶级文件夹中运行phpdoc
来生成完整的API级别文档,文档将出现在docs
文件夹中,尽管您需要安装PHPDocumentor。您可能会发现单元测试是了解如何执行各种操作(如加密)的好来源。
如果文档没有涵盖您需要的,请在Stack Overflow上的许多问题中进行搜索,并且在您询问有关“SMTP错误:无法连接到SMTP主机”的问题之前,请阅读故障排除指南。
测试
在test文件夹中有一个PHPUnit测试脚本。PHPMailer使用PHPUnit 4.8 - 我们会使用5.x,但我们需要在PHP 5.5上运行。
如果这没有通过,你能做些什么来帮助吗?
安全性
请负责任地披露发现的任何漏洞 - 将发现的任何安全问题私下报告给维护者。
PHPMailer版本低于5.2.22(2017年1月9日发布)存在本地文件披露漏洞,CVE-2017-5223。如果传递到msgHTML()
的内容来自未过滤的用户输入,则相对路径可以映射到绝对本地文件路径并作为附件添加。此外,请注意,addAttachment
(就像file_get_contents
、passthru
、unlink
等)也不应传递用户提供的参数!由Asiasecurity的Yongxiang Li报告。
PHPMailer版本低于5.2.20(2016年12月28日发布)存在CVE-2016-10045远程代码执行漏洞,由Dawid Golunski负责任地报告,并由Paul Buonopane(@Zenexer)修复。
PHPMailer版本低于5.2.18(2016年12月发布)存在CVE-2016-10033严重远程代码执行漏洞,由Dawid Golunski负责任地报告。
请参阅SECURITY以获取有关安全问题的更多详细信息。
贡献
请将错误报告、建议和拉取请求提交到GitHub问题跟踪器。
我们特别感兴趣的是修复边缘案例、扩展测试覆盖范围和更新翻译。
如果您在文档中发现了错误或想添加某些内容,请继续修改wiki - 任何人都可以编辑它。
如果您在迁移到PHPMailer GitHub组织之前已经克隆了git,您需要使用以下命令从您的克隆中更新任何引用旧GitHub位置的远程URL:
git remote set-url upstream https://github.com/PHPMailer/PHPMailer.git
请不要再使用SourceForge或Google Code项目;它们已过时,不再维护。
赞助
PHPMailer的开发时间和资源由Smartmessages.net提供,这是一个强大的电子邮件营销系统。
我们欢迎接受其他形式的贡献,无论是啤酒🍺、T恤👕、亚马逊愿望单突袭,还是冷硬的现金💰。如果您想向维护者或贡献者捐赠以表示“感谢”,请通过贡献者页面上的个人资料页面与他们联系。
变更日志
请参阅变更日志。
历史
- PHPMailer最初由Brent R. Matzelle于2001年编写,作为一个SourceForge项目。
- Marcus Bointon(SF上的coolbru)和Andy Prevost(codeworxtech)于2004年接管了该项目。
- 2010年成为Google Code上的Apache孵化器项目,由Jim Jagielski管理。
- Marcus于2008年在GitHub上创建了分支。
- 2013年,Jim和Marcus决定联合起来,将GitHub用作PHPMailer的标准和官方仓库。
- PHPMailer于2013年迁移到PHPMailer组织。
从SourceForge迁移后发生了什么变化?
- SourceForge和Google Code项目的官方继承者。
- 测试套件。
- 与Travis-CI的持续集成。
- Composer支持。
- 公开开发。
- 额外的语言和语言字符串。
- CRAM-MD5身份验证支持。
- 保留原始SourceForge项目的作者、提交和分支的完整仓库历史。