PHP 尝试安全发送邮件 - 找不到 PHPMailer 类

2024-03-19

我从以下几点开始:

composer require phpmailer/phpmailer

随后放置一次 require

require_once "../vendor/autoload.php";

Then

$mail = new PHPMailer;

这就是 PHP 有一个致命错误的地方:

致命错误:未找到“PHPMailer”类

以下是我的代码: 使用 PHPMailer\PHPMailer\PHPMailer; 使用 PHPMailer\PHPMailer\Exception;

# require php mailer
  require_once "../vendor/autoload.php";

  //PHPMailer Object
  $mail = new PHPMailer;

  $mail->isSMTP();
  $mail->SMTPDebug = 3; 
  $mail->SMTPAuth = true;
  // $mail->SMTPSecure = "ssl";
  $mail->SMTPSecure = "tls";
  $mail->Host = "smtp-relay.gmail.com";
  $mail->Port = "587";
  $mail->Username = "some gmail address";
  $mail->Password = "some password";
  $mail->SetFrom("[email protected] /cdn-cgi/l/email-protection");
  $mail->Subject = $subject;
  $mail->Body = $htmlMessage;
  $mail->AddAddress($recpEmails);
  $mail->Send();

$htmlMessage是一个包含纯文本和带有 mime_boundary 的 html 的变量,但它永远不会到达那里,因为它找不到 PHPMailer。

这就是我试图解决该问题的方法:

我在与vendor相同的目录中创建了另一个名为PHPMailer的目录,这个新目录包含phpmailer / phpmailer / src的内容,但它仍然找不到PHPMailer类。

我是否还需要 PHPMailer.php 文件?我认为这就是自动加载应该做的事情?

提前致谢

UPDATE

在评论中的 @Phil 指出我缺少 use 命名空间之后,我更新了代码,这导致了一个新的错误:

致命错误:未捕获异常“PHPMailer\PHPMailer\Exception”,消息“SMTP connect() 失败”

我读到了$mail->SMTPDebug = 3;给出了更多细节,其中揭示了以下内容:

2019-02-11 01:51:57 连接:打开 ssl://smtp-relay.gmail.com:587,timeout=300,options=array()
2019-02-11 01:51:58 连接失败。错误 #2:stream_socket_client():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:140770FC:SSL 例程:SSL23_GET_SERVER_HELLO:未知协议 [v2018/assets/api/vendor/phpmailer/phpmailer/src/SMTP.php 第 327 行]
2019-02-11 01:51:58 连接失败。错误 #2:stream_socket_client():无法启用加密 [v2018/assets/api/vendor/phpmailer/phpmailer/src/SMTP.php 第 327 行]
2019-02-11 01:51:58 连接失败。错误#2:stream_socket_client():无法连接到 ssl://smtp-relay.gmail.com:587(未知错误)[v2018/assets/api/vendor/phpmailer/phpmailer/src/SMTP.php 第 327 行]
2019-02-11 01:51:58 SMTP 错误:无法连接到服务器:(0)
SMTP 连接()失败。https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

然后我读到另一篇文章 https://stackoverflow.com/questions/46785313/uncaught-exception-php-mailer-exception-with-message-smtp-connect-failed更改以下设置,这使我可以看到它正在连接,但它不接受我的凭据:

$mail->SMTPSecure = "tls";

2019-02-11 02:00:26 服务器 -> 客户端:535-5.7.8 用户名和密码不被接受。了解更多请访问535 5.7.8https://support.google.com/mail/?p=BadCredentials https://support.google.com/mail/?p=BadCredentialsf2sm562482otb.6 - gsmtp
2019-02-11 02:00:26 SMTP 错误:密码命令失败:535-5.7.8 不接受用户名和密码。了解更多请访问535 5.7.8https://support.google.com/mail/?p=BadCredentials https://support.google.com/mail/?p=BadCredentialsf2sm562482otb.6 - gsmtp

我现在不知道该怎么办,因为我知道这些是我的 Gmail 帐户的凭据。我必须有 Gmail 企业帐户或类似帐户吗?

还有一则更新

我使用了错误的密码。输入正确的密码后,我开始收到以下消息:

2019-02-11 14:33:44 服务器 -> 客户端:550-5.7.0 邮件中继被拒绝 [172.117.2.44]。 550-5.7.0 域之一的中继凭据无效:(从 HELO 和 MAIL FROM 获取)。550-5.7.0 电子邮件是从未在 550-5.7.0 中注册的域或 IP 地址发送的您的 G Suite 帐户。请登录您的 G Suite 帐户并 550-5.7.0 验证您的发送设备 IP 地址是否已在 550-5.7.0 G Suite SMTP 中继设置中注册。更多信息请访问550 5.7.0https://support.google.com/a/answer/6140680#maildenied https://support.google.com/a/answer/6140680#maildeniedh192sm1484247qke.14 - gsmtp

结果我必须有一个 G-Suite 帐户才能使用 smtp-relay.gmail.com。我只有一个普通的 Gmail 帐户。当我更改为 smtp.gmail.com 时,我又回到了错误的凭据错误。我将等待我的 G-Suite 帐户得到验证,然后更新结果。


尝试添加

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

在文件顶部导入 PHPMailer 类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 尝试安全发送邮件 - 找不到 PHPMailer 类 的相关文章

  • 如何解决“无法加载PEM客户端证书,OpenSSL错误:02001003:系统库:fopen:没有这样的进程”错误?

    如果这个问题很愚蠢 请原谅 但我是这个领域的新手 我需要通过 SSL 从 Drupal 7 站点连接到服务 我有一个扩展名为 p12 的文件及其密码 另外 我使用 PHP 7 1 1 和 Windows 7 64x 我使用以下命令将 p12
  • 我应该在 PHP 代码中使用断言吗?

    一位同事添加了assert http php net assert在我们的库中 在我本来会使用 if 语句并引发异常的地方执行几次命令 在此之前我什至从未听说过断言 以下是他如何使用它的示例 assert isset this gt rec
  • 如何使用 php 从字符串中提取日期

    我需要从字符串中提取日期 下面是我的代码和字符串 str Updated status to Masters Software Engineering Enrolled Documents to Send on 03 06 2014 14
  • 我的设置未保存在 WordPress 主题选项页面中

    我正在尝试创建一个基于 WordPress 设置 API 的主题选项页面 当我在浏览器中检查 options php 页面时 例如http mysite com wordpress wp admin options php http mys
  • node-mongodb-native的插入性能

    我正在使用 MongoDB 测试 Node js 的性能 我知道其中每一个都很好 彼此独立 但我正在尝试一些测试来感受它们 我遇到了这个问题 但无法确定来源 问题 我正在尝试在单个 Node js 程序中插入 1 000 000 条记录 它
  • Composer 无法下载文件

    我正在尝试在命令行上使用作曲家 php composer phar update php composer phar install php composer phar self update php composer phar selfu
  • php动态创建子域的问题

    你好 我通过以下代码在 php 中创建子域 function subd host port ownername passw request sock fsockopen localhost 2082 if sock print Socket
  • 使用 php ping 网站

    我想创建一个 php 脚本 它将 ping 一个域并列出响应时间以及请求的总大小 这将用于监控网站网络 我尝试过curl 这是我到目前为止的代码 function curlTest2 url clearstatcache return if
  • 将具有值的产品属性添加到 Woocommerce 中的产品

    我正在使用此代码添加自定义属性 attributes array array name gt Size options gt array S L XL XXL position gt 1 visible gt 1 variation gt
  • laravel 5.3 新的 Auth::routes()

    最近开始使用laravel 5 3写博客 但是运行后出现一个问题php artisan make auth 当我运行这个时 它会在我的web php 这是其中的代码 Auth routes Route get home HomeContro
  • PHP括号少IF条件不接受多个语句

    我从来都不喜欢控制结构中的括号 直到今天我才意识到它如何只接受括号内的一条语句而不是 if 条件 如果我有多个语句 它会抛出语法错误 这是 PHP 的工作方式还是我的 IDE 有问题 显然错误很明显 但我只是想确保这是正常的 如果您有任何其
  • 为什么 PHPUnit 将一些右大括号显示为未被覆盖?

    我正在使用 PHPUnit 3 6 7 PHP CodeCoverage 1 1 1 和 Xdebug 2 1 2 当我让 PHPUnit 将代码覆盖率统计信息写入 clover 样式的 XML 文件时 它偶尔会显示一个右花括号 表示测试未
  • 如何在之前的 Facebook 身份验证后自动安全地让用户登录?

    用户抱怨他们必须过于频繁地登录 如果身份验证完全基于 Facebook OAuth 那么用户如何在下次访问该页面时自动登录 用户流程示例 用户点击 使用 Facebook 登录 用户通过 Facebook 进行身份验证并被重定向回网站 用户
  • PHPMailer 验证失败

    当我尝试在工作中使用 Windows Server 2012 上的 PHPMailer 来使用 SMTP 发送报告电子邮件时 出现身份验证失败错误 我在域上使用服务器管理员帐户 我非常确定密码是正确的 检查下面的代码 require PHP
  • C++ php 和静态库

    我创建了一个library a 其中包含 cpp 和 h 文件 其中包含很多类 嵌套类和方法 我想在 php 示例中包含这个静态库并尝试使用它 我想提一下 我是 php 新手 我已经在 test cpp 文件中测试了我的 libray a
  • PHP 致命错误:未找到“MongoClient”类

    我有一个使用 Apache 的网站 代码如下 当我尝试访问它时 我在 error log 中收到错误 PHP Fatal Error Class MongoClient not found 以下是可能错误的设置 但我认为没有错误 php i
  • 从关系中合并 Laravel 中的集合

    假设我有 3 张桌子 Images Subject Style 关系是多对多 图像 主题 和多对多 图像 样式 现在我想做一些类似的事情 result subjectResult gt images gt merge styleResult
  • 是否可以使用流上下文在 PHP 下使用 FTPS?

    我了解到使用ftpsPHP for Windows 下的 ftp ssl connect 很困难 您被要求进入构建自己的二进制文件以包括 Open SSL 的漫长旅程 我找到了以下建议phpseclib http phpseclib sou
  • 通过php将mp3转换为ogg

    我有一个网站 用户可以上传音乐并将其转换为 mp3 但我需要 mp3 和 ogg 文件支持才能以 html5 播放音乐 那么 有没有可以将mp3转换为ogg的php脚本呢 使用 ffmpeg 您可以直接从 php 脚本执行命令
  • 合并 csv 文件 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何在 PHP 或 joomla 中将多个 CSV 文件合并为一个 csv 文件 将文件夹中 csv 文件中的所有数据合并到文本文件中 通

随机推荐