没有 Composer 的 PHPMailer 安装

标签 php phpmailer

请原谅我的无知。 我正在尝试在 Linux 上的 PHP 5.6 下安装 PHPMailer 6.0.1。 我的 PHP 安装是远程的,我通过 FTP 管理我所有网站的 PHP(我通常将软件包下载为 .zips 到 Win 10,解压缩,然后将结果通过 FTP 传输到我的网站空间)。

在安装 PHPMailer 的各种方法中,Composer 是首选,但这是我失败的地方。 Composer 说明似乎都不适合这种工作方式——安装程序要我“选择要使用的命令行 PHP”,但我本地没有 PHP ... 恼人的是,我看到安装了 PHPMailer 的 composer.json 文件等待使用。 但是没有 PHPMailerAutoload.php(这是 Composer 创建的吗?)

所以我尝试手动安装 PHPMailer。我下载、解压缩并通过 FTP 将生成的目录上传到我的网站空间中的 PHPMailer 文件夹中。然后,我在我的 PHP 代码的开头和任何函数之外插入以下内容:

require_once 'PHPMailer/src/PHPMailer.php';
require_once 'PHPMailer/src/SMTP.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

对于“use”语句,我得到一个语法错误unexpected 'use' (T_USE) … 没有它们,我就只能尝试实例化: $mail = 新的 PHPMailer; 但这失败了,没有找到“class 'PHPMailer'”

请问我做错了什么,我怎样才能做得更好?

最佳答案

这不是 PHPMailer 所特有的——它是您使用任何使用 namespace 的无数 PHP 包所需要做的。关于如何使用 use 的 PHP 文档是 here .

简短的版本是,你需要在任何其他脚本之前放置 namespaceuse 指令,所以如果你只是颠倒命令的顺序,它应该可以工作:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require_once 'PHPMailer/src/PHPMailer.php';
require_once 'PHPMailer/src/SMTP.php';

顺便说一下,这是 PHPMailer 自述文件中的示例和 PHPMailer 提供的所有其他示例中使用的顺序。你可能会发现 the upgrade guide也很有用。

PHPMailerAutoload.php 文件不再存在 - composer 的自动加载器做得更好。 PHPMailer 自带的 composer.json 文件是用来解决你应用自带的 composer 文件的依赖和标记兼容性需求的,也就是说,它是用来告诉你项目的 composer 文件如何使用 PHPMailer——但不是你项目的composer 文件本身——你加载的每个包都有自己的。

在没有本地 PHP 实例的情况下进行开发是一项艰巨的工作——我们应该说,在您的实时服务器上进行开发是“令人沮丧的”!如果您无法直接安装 PHP,请使用 Docker、VirtualBox 或类似 XAMPP 的完全独立的工具在容器或 VM 中运行它。

关于没有 Composer 的 PHPMailer 安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46247149/

相关文章:

php - 在 phpmailer 中设置紧急选项

javascript - 未定义索引 PHPMailer 表单

php - 为什么 PHP 邮件程序在发送后将 mimeheader 打印到屏幕上?

php - 如果键存在,则 SQL 更新行否则更新默认行

php - 帮助按 id 显示 MySQL 数据库中的内容

php - PHP 命名空间可以包含变量吗?

smtp - Mailgun、Mandrill 和 Ses Driver,SMTP 和 phpmailer,在 Laravel 5.1 中使用哪一个?

php认证脚本

php - 交响乐 3 : Passing variables into forms

带有 PDF 的 PHPMailer AddStringAttachment