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

时间:2018-12-16 01:41:51

标签: git phpmailer php-7.2

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

多年来,该站点一直在使用PHPMailer版本5.2.4及其相关类而没有使用Composer进行安装,而不会产生任何问题,这已经产生了很多年,以生成通过第三方SMTP电子邮件提供商发送的交易电子邮件。

我想将PHPMailer 5.2.4类升级到最新的稳定版本,并继续使用代码中的类而不通过Composer进行部署。

我知道从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 Master分支下载了以下文件:

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

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

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

...
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版的开发环境中生成电子邮件。

我已经准备好将更新部署到站点的生产/活动服务器上,并希望确认我已经使用了最新的经过稳定测试的PHPMailer类。

我只是有一个愚蠢的问题/担忧:

在不使用Composer的情况下使用PHPMailer类时,我阅读了一些教程,以从PHPMailer GitHub Project的Master Branch src下载这些类。

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

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

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

让我感到困惑的是,我看到唯一被标记为“稳定”的分支是GitHub“ 5.2 Stable”分支,其最新版本是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?  

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这是我的问题!

寻找将PHPMailer从5升级到6的答案的确切位置是UPGRADING doc,还有我专门针对这种情况编写的this question

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

事后看来,我应该调用stable分支legacy,以更清楚地表明它已弃用。所有版本的PHP 5现在都已经报废,因此没有人可以再使用该分支。

版本属性在6中更改为常量,因为它们显然是常量! TBH它们主要是在发布期间令人讨厌。现在只有主类和VERSION文件包含版本字符串(它们都包含一个?)。在大多数情况下,版本号应该只对作曲家有意义。异常类不足以引起人们的兴趣。

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

如果您还没有弄清楚这一点,那么使用作曲家确实是阻力最小的途径,并且消除了很多复杂性;您可能再也不需要写另一个include / require语句了。