PHPMailer 类 - 如何在没有 Composer 的情况下从 GitHub 下载最新的稳定版本

PHPMailer Classes - How to download the latest stable version from GitHub without Composer

我的任务是将当前实施的 PHPMailer 版本 5.2.4 classes 升级到这些 classes 的最新稳定版本,用于电子商务 Web 应用程序从 PHP 5.6 迁移到 PHP 7.2。

该站点多年来一直在使用 PHPMailer 版本 5.2.4 及其相关的 classes 安装而没有使用 Composer 来生成通过第 3 方发送的交易电子邮件,没有任何问题SMTP 电子邮件提供商。

我想将 PHPMailer 5.2.4 classes 升级到最新的稳定版本,并继续在代码中使用 classes 而无需通过以下方式部署它们作曲家。

我知道从 PHPMailer 版本 6.0 开始,需要将命名空间添加到代码中。

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;

require 'src/Exception.php';
require 'src/PHPMailer.php';
require 'src/SMTP.php';

我去了 GitHub 上的 PHPMailer 项目并从 GitHub 主分支下载了以下文件:

https://github.com/PHPMailer/PHPMailer/tree/master/src

src/PHPMailer.php
src/Exception.php
src/SMTP.php

我在使用这些 classes 的现有代码中添加了必要的命名空间;我还更新了我现有的异常处理代码,该代码以前捕获 phpmailerException 类型的异常,现在使用 PHPMailer Exception Class 命名空间,并且任何现有的异常引用都使用全局命名空间;

...
try {
...
} catch (Exception $e) {
     //$e is an instance of PHPMailer\PHPMailer\Exception
    echo $e->errorMessage();
} catch (\Exception $e) {
    //$e is an instance of the PHP built-in Exception class
    echo $e->getMessage();
}

进行这些更新后,在我的开发环境 运行 PHP 7.2 版中生成电子邮件一切正常。

我已准备好将更新部署到我站点的 Production/live 服务器,并想确认我使用的是经过全面测试的 PHPMailer classes 的最新稳定版本.

我就是有点傻question/concern:

在不使用 Composer 的情况下使用 PHPMailer classes 时,我阅读了几个教程以从 PHPMailer GitHub 项目的 classes 下载这些 classes主分支 src。

但是,我也阅读了一些使用PHPMailer 6.0 版的教程。另外,我好像记得在某处读到master分支不保证稳定。

我的问题: 如果我想要最新的,我使用 GitHub Master Branch src 下载 PHPMailer classes 用于我的网站是否正确这些类的经过全面测试的稳定版本?

或者,我应该使用 GitHub 6.0 Branch src 来下载这些 class 文件吗?

更让我困惑的是,我看到唯一一个专门标记为 "stable" 的分支是 GitHub“5.2 稳定”分支,其最新版本是 5.2.27。

在相关说明中,能否请您在 Master 分支中澄清以下内容:

**src/SMTP.php**  
(has const VERSION = '6.0.6';)    

**src/Exception.php**  
Is there a reason that comments or code in this file does not mention Version 6.0.6?

**src/PHPMailer.php**  
Is there a reason that comments or code in this file does not mention Version 6.0.6?  

非常感谢您的帮助。

这是我的问题!

寻找有关将 PHPMailer 从 5 升级到 6 的答案的权威地点是我专门针对这种情况编写的 UPGRADING doc, and also

是的,这三个文件是基本邮件发送所需要的。只有当您使用 Oauth 时,Composer 才会变得更加重要,Oauth 会引入大量依赖项。

事后看来,我应该调用 stable 分支 legacy 来更清楚地表明它已被弃用。 PHP 5 的所有版本现在都已停产,所以没有人应该再使用该分支了。

版本属性在6中改成了常量,因为明显是常量! TBH 它们主要是在发布期间令人讨厌。主要的 classes 和 VERSION 文件是现在唯一包含版本字符串的文件(它们都包含一个?)。大多数情况下,版本号应该只对作曲家感兴趣。例外 class 只是不够有趣,不足以保证一个。

的确,master 分支的 HEAD 可能不稳定,但标记的版本来自那里,应该被认为是稳定的。同样,如果您使用 composer,这会自动发生。我不建议直接从 HEAD 部署版本,但同样,这就是你应该使用 composer 的原因。即使您不想在安装时 运行 作曲家,或者在部署时不能 运行 作曲家(例如,您的用户在共享主机上),您也应该在构建安装包时使用它在本地,以便作曲家可以为您处理。

如果您还没有从中弄明白,使用 composer 确实是阻力最小的途径,并且消除了很多复杂性;您可能永远不需要再写另一个 include/require 语句。