php - 在 AWS AMI 实例上使用 PHPMailer 发送邮件时出现问题
问题描述
我是 UNIX 的新手,来自 Windows 背景。我在 Amazon EC2 上创建了一个实例并安装了 apache、PHP 和 MySQl。我已经成功上传了 PHP 网站的文件。一切正常,除了我从联系表格发送邮件时遇到问题。
我在这里浏览了 AWS 教程:https ://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-using-smtp-php.html
我成功安装了作曲家并在 Putty 中运行它,我看到创建了供应商目录并下载了 phpmailer 文件。
站点结构如下所示:
html
test_mail.php
--vendor
----bin
----composer
----phpmailer
----autoload.php
我尝试使用教程中包含的示例电子邮件脚本,它看起来像这样:
// If necessary, modify the path in the require statement below to refer to the
// location of your Composer autoload.php file.
require 'vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
// Instantiate a new PHPMailer
$mail = new PHPMailer;
// Tell PHPMailer to use SMTP
$mail->isSMTP();
$mail->SMTPDebug = 2;
// Replace sender@example.com with your "From" address.
// This address must be verified with Amazon SES.
$mail->setFrom('sender@example.com', 'Sender Name');
但我收到以下错误:
Fatal error: Uncaught Error: Class 'PHPMailer\PHPMailer\PHPMailer' not found in /var/www/testSite/html/test_mail.php:10 Stack trace: #0 {main} thrown in /var/www/testSite/html/test_mail.php on line 10
第 10 行是
$mail = new PHPMailer;
所以我很困惑问题是什么。所需的 PHPMailer 文件似乎已由 composer 正确创建,并且“vendor\autoload.php”的路径应该是正确的。
我错过了服务器设置中的某些东西吗?
感激地收到任何建议。
大卫
解决方案
谢谢劳伦斯为我指明了正确的方向......正如你所指出的,问题是使用了 phpmailer 的版本。
当我将此项目的 composer.json 更改为
{
"require": {
"phpmailer/phpmailer":"~6.0"
}
}
并运行作曲家更新我的脚本现在(大部分)成功运行。
看起来 AWS 文档中给出的示例不正确,因为它说要使用 phpmailer 5.2,但它提供的脚本仅适用于版本 6 及以后的版本。
谢谢你!
大卫
推荐阅读
- c++ - HttpSendRequest 在 Windows 2016 服务器上有时非常慢,在 Windows 2008 服务器上工作正常
- php - 从 Google Translate API 获取翻译作为 PHP 变量
- selenium-webdriver - 如何在以下场景中使用 selenium webdriver 获取 WebElements 的计数:
- excel - 为什么这个 IF 公式不起作用?
- sql - 有多个传入代码的 SQL 查找表
- sas - 隔离有 2 个诊断但诊断数据位于不同行的患者
- java - java.lang.StringIndexOutOfBounds 错误
- assembly - ASM 程序返回 1 而不是预期值 WSL
- visual-studio - Microsoft.VisualStudio.Web.Host.exe 接管
- ubuntu - Makefile:72: *** 多个目标模式。停止。尝试在 ubuntu 14.04 上安装 imapsync