我的任务是将当前实现的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?
非常感谢您的帮助。
答案 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
语句了。