MateusNobreSilva/app_send_mail

GitHub: MateusNobreSilva/app_send_mail

PHP 全功能电子邮件创建与传输类,解决原生 mail() 难以安全支持加密、认证与附件的问题。

Stars: 26 | Forks: 11

```markdown PHPMailer PHPMailer – PHP 的全功能电子邮件创建与传输类 测试状态 codecov.io 最新稳定版本 总下载量 许可证 API 文档 功能 这可能是世界上最流行的用于从 PHP 发送电子邮件的代码! 被许多开源项目使用:WordPress、Drupal、1CRM、SugarCRM、Yii、Joomla! 等 集成 SMTP 支持——无需本地邮件服务器即可发送 支持发送到多个收件人、抄送、密送和回复地址 为不读取 HTML 邮件的邮件客户端提供多部分/替代邮件 添加附件,包括内嵌附件 支持 UTF-8 内容以及 8bit、base64、binary 和 quoted-printable 编码 通过 SMTPS 和 SMTP+STARTTLS 传输使用 LOGIN、PLAIN、CRAM-MD5 和 XOAUTH2 机制进行 SMTP 认证 自动验证电子邮件地址 防止报头注入攻击 错误信息支持 50 多种语言! 支持 DKIM 和 S/MIME 签名 兼容 PHP 5.5 及更高版本,包括 PHP 8.1 使用命名空间以防止名称冲突 更多功能! 为何你可能需要它 许多 PHP 开发者需要从他们的代码中发送电子邮件。唯一直接支持此功能的 PHP 函数是 mail()。然而,它无法提供任何帮助来使用诸如加密、认证、HTML 消息和附件等流行特性。 正确格式化电子邮件出乎意料地困难。有许多重叠(且相互冲突)的标准,需要严格遵守令人头疼的格式化和编码规则——你在网上找到的绝大多数直接使用 mail() 函数的代码都是错误的,甚至是不安全的! PHP mail() 函数通常通过本地邮件服务器发送邮件,在 Linux、BSD 和 macOS 平台上通常由 sendmail 二进制文件前置,而 Windows 通常不包含本地邮件服务器;PHPMailer 的集成 SMTP 客户端允许在所有平台上发送电子邮件,而无需本地邮件服务器。但请注意,应尽量避免使用 mail() 函数;使用 SMTP 发往 localhost 既更快也更安全。 请不要尝试自己实现——如果你不使用 PHPMailer,还有许多其他优秀的库,你应该在使用自己编写代码之前先研究它们。尝试 SwiftMailer、Laminas/Mail、ZetaComponents 等。 许可证 本软件在 LGPL 2.1 许可证下分发,同时附带 GPL 合作承诺。请阅读 LICENSE 文件以了解软件的可用性和分发信息。 安装与加载 PHPMailer 可在 Packagist 上获取(使用语义化版本控制),并通过 Composer 安装是推荐的安装方式。只需将以下行添加到你的 composer.json 文件: "phpmailer/phpmailer": "^6.5" 或运行 composer require phpmailer/phpmailer 请注意,vendor 文件夹和 vendor/autoload.php 脚本由 Composer 生成;它们不属于 PHPMailer。 如果你想使用 Gmail XOAUTH2 认证类,还需要在 composer.json 中添加对 league/oauth2-client 包的依赖。 或者,如果你不使用 Composer,可以下载 PHPMailer 的 zip 文件(注意:文档和示例不包含在 zip 文件中),然后将 PHPMailer 文件夹的内容复制到 PHP 配置中指定的 include_path 目录之一,并手动加载每个类文件: SMTPDebug = SMTP::DEBUG_SERVER; // 启用详细调试输出 $mail->isSMTP(); // 使用 SMTP 发送 $mail->Host = 'smtp.example.com'; // 设置用于发送的 SMTP 服务器 $mail->SMTPAuth = true; // 启用 SMTP 认证 $mail->Username = 'user@example.com'; // SMTP 用户名 $mail->Password = 'secret'; // SMTP 密码 $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // 启用隐式 TLS 加密 $mail->Port = 465; // TCP 端口用于连接;如果设置 `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS` 则使用 587 // 收件人 $mail->setFrom('from@example.com', 'Mailer'); $mail->addAddress('joe@example.net', 'Joe User'); // 添加一个收件人 $mail->addAddress('ellen@example.com'); // 名称可选 $mail->addReplyTo('info@example.com', 'Information'); $mail->addCC('cc@example.com'); $mail->addBCC('bcc@example.com'); // 附件 $mail->addAttachment('/var/tmp/file.tar.gz'); // 添加附件 $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // 可选名称 // 内容 $mail->isHTML(true); // 将邮件格式设置为 HTML $mail->Subject = '这是主题'; $mail->Body = '这是 HTML 消息体 加粗!'; $mail->AltBody = '这是非 HTML 邮件客户端的纯文本正文'; $mail->send(); echo '消息已发送'; } catch (Exception $e) { echo "消息无法发送。邮件错误: {$mail->ErrorInfo}"; } 你可以在 examples 文件夹中找到许多常见场景的示例,包括通过 Gmail 发送、构建联系表单、发送到邮件列表等。 如果你重复使用实例(例如在向邮件列表发送时),可能需要清除收件人列表以避免重复发送消息。有关进一步指导,请参阅邮件列表示例。 就这样。你现在应该准备好使用 PHPMailer 了! 本地化 PHPMailer 默认为英文,但在 language 文件夹中,你可以找到许多用于 PHPMailer 错误消息的翻译。它们的文件名包含翻译的 ISO 639-1 语言代码,例如 fr 表示法语。要指定语言,你需要告诉 PHPMailer 使用哪一个,如下所示: // 加载法语版本 $mail->setLanguage('fr', '/optional/path/to/language/directory/'); 我们欢迎更正和新语言——如果你在寻找更正,请在 tests 文件夹中运行 PHPMailerLangTest.php 脚本,它将显示缺失的翻译。 文档 从 GitHub wiki 开始阅读。如果遇到问题,请查阅故障排除指南,因为它会频繁更新。 有关如何使用 PHPMailer 的常见场景可以在 examples 文件夹中找到。如果你在寻找一个好的起点,我们建议你从 Gmail 示例开始。 为了减少 PHPMailer 的部署代码体积,如果通过 Composer 或 GitHub 的 zip 文件下载加载 PHPMailer,则不包含示例,因此你需要克隆 git 仓库或使用上述链接直接获取示例。 完整的生成 API 文档在线可用。 你可以通过在顶级文件夹运行 phpdoc 来生成完整的 API 级文档,文档将出现在 docs 文件夹中,但你可能需要安装 PHPDocumentor。你可能会发现单元测试是了解如何执行各种操作(如加密)的好参考。 如果文档没有涵盖你需要的内容,请在 Stack Overflow 上搜索许多问题,在提问“SMTP Error: Could not connect to SMTP host.”之前,请阅读故障排除指南。 测试 PHPMailer 测试使用 PHPUnit 9,并带有回退以兼容旧版本的 PHPUnit 和 PHP。 测试状态 如果这没有通过,你能做些什么来帮助吗? 安全性 请负责任地披露发现的漏洞——将安全问题私下报告给维护者。 请参阅 SECURITY 和 GitHub 上的 PHPMailer 安全公告。 贡献 请将错误报告、建议和拉取请求提交到 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.net 隐私优先电子邮件营销标志 非常欢迎捐赠,无论是啤酒 🍺、T恤 👕 还是真金白银 💰。通过 GitHub 的赞助是向 PHPMailer 维护者和贡献者说“谢谢”的一种简单方便的方式——只需点击项目页面上的“赞助”按钮。如果你的公司使用 PHPMailer,请考虑参加 Tidelift 的企业支持计划。 PHPMailer For Enterprise 作为 Tidelift 订阅的一部分提供。 PHPMailer 维护者和数千个其他软件包的维护者正在与 Tidelift 合作,为你使用的开源软件提供商业支持和维护。节省时间、降低风险并改善代码健康状况,同时支付你实际使用的软件包的维护者费用。了解更多。 变更日志 请参阅 changelog。 历史 PHPMailer 最初由 Brent R. Matzelle 于 2001 年作为 SourceForge 项目编写。 Marcus Bointon(coolbru on SF)和 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 项目。 测试套件。 使用 GitHub Actions 的持续集成。 Composer 支持。 公开开发。 额外的语言和语言字符串。 CRAM-MD5 认证支持。 完整保留原始 SourceForge 项目中的作者、提交和分支历史。 ```
标签:1CRM, 404团队, 8bit, API文档, Base64, BCC, CC, Codecov, Composer, CRAM-MD5, DKIM, Drupal, ffuf, HTML邮件, Joomla, LGPL, LOGIN, MIME, OpenVAS, Packagist, PECL, PHP, PHP 5.5, PHP 8.1, PHPMailer, PHPUnit, PLAIN, Quoted-Printable, Reply-To, S/MIME, SMTP, SMTP认证, SSL/TLS, STARTTLS, SugarCRM, UTF-8, WordPress, XOAUTH2, Yii, 内嵌附件, 单元测试, 命名空间, 多收件人, 多语言错误, 头注入防护, 开源库, 开源框架, 持续集成, 搜索引擎爬虫, 自动验证邮箱, 邮件传输, 邮件发送, 邮件安全, 邮件库, 集成开发