izisoft/yii2-mailer

PHPMailer是一个功能齐全的PHP电子邮件创建和传输类

dev-master 2018-10-11 03:09 UTC

This package is not auto-updated.

Last update: 2024-09-26 04:16:11 UTC


README

Kho hàng US - Dịch vụ đặt hàng Mỹ số 1 Việt Nam

Mỹ phẩm cao cấp Hàn Quốc Amaranth - Sorabee - Bello Vita

分享php编程经验 - vps - hosting

分享来自越南和全球顶级电子商务网站的优惠券促销信息

EMZ - Mua gì cũng có

Thao Chip Shop, Chuyên bán buôn, bán lẻ đồ ngủ nữ

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内容以及8位,base64,二进制和quoted-printable编码
  • 通过SSL和SMTP+STARTTLS传输使用LOGIN,PLAIN,CRAM-MD5和XOAUTH2机制进行SMTP身份验证
  • 自动验证电子邮件地址
  • 防止头注入攻击
  • 47种语言错误信息!
  • 支持DKIM和S/MIME签名
  • 与PHP 5.5及更高版本兼容
  • 使用命名空间以防止名称冲突
  • 更多功能!

为什么你可能需要它

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

正确格式化电子邮件非常困难。有无数的RFC重叠,需要严格遵循复杂难懂的格式化和编码规则 - 在网上找到的绝大多数直接使用mail()函数的代码都是错误的!请不要自己尝试 - 如果您不使用PHPMailer,还有许多其他出色的库供您选择,在创建自己的库之前请先看看 - 尝试SwiftMailerZend/MaileZcomponents等等。

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

许可证

本软件采用LGPL 2.1许可协议进行分发。请阅读LICENSE以获取有关软件可用性和分发的信息。

安装与加载

PHPMailer可在Packagist上找到(使用语义版本控制),并推荐通过Composer安装PHPMailer。只需将以下行添加到您的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'按钮,但请注意,文档和示例不包括在压缩包中。

旧版本

与PHP 5.0 - 7.0兼容的PHPMailer 5.2(不再提供功能更新,并将仅接收安全更新)不再支持。您可以在5.2-stable分支中找到5.2的最新版本,5.2的未来版本将带有5.2.x版本号,因此现有的Composer配置应该仍然有效。如果您使用PHP 5.5或更高版本,我们建议您进行必要的更改以切换到6.0版本。

从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文件夹中,您可以找到许多(截至撰写时为47个!)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 上运行。

构建状态: Build Status

如果这个测试没有通过,你能做些什么来帮忙吗?

安全性

请负责任地披露发现的任何漏洞 - 私下向维护者报告发现的任何安全问题。

PHPMailer 版本早于 5.2.22(发布于 2017 年 1 月 9 日)有一个本地文件泄露漏洞,CVE-2017-5223。如果传递给 msgHTML() 的内容来自未经筛选的用户输入,则相对路径可以映射到绝对本地文件路径并作为附件添加。另外请注意,addAttachment(就像 file_get_contentspassthruunlink 等一样)也不应传递用户提供的参数!由 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提供,这是一个强大的电子邮件营销系统。

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于2008年在GitHub上创建了分支。
  • Jim和Marcus于2013年决定联手,并将GitHub作为PHPMailer的官方和规范仓库。
  • PHPMailer于2013年迁移至GitHub上的PHPMailer组织

从SourceForge迁移后有哪些变化?

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