如何使用 PHPMailer 通过 themosis/wordpress 框架发送电子邮件?

how can I use PHPMailer to send emails with themosis/wordpress framework?

我有一个网站使用名为(documentation here)的框架。一个基于laravel的WordPress框架,但我不太明白电子邮件是如何工作的。

直接问题就是:PHPMailer怎么发邮件?

目前,出于测试目的,我希望在页面加载后立即发送一封电子邮件,因此我的控制器方法如下所示:

<?php

namespace Theme\Controllers;

use Themosis\Route\BaseController;
use Phpmailer\PHPMailer;

class OtherController extends BaseController {
    $mail = new PHPMailer;
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->Port = 587;
    $mail->SMTPSecure = 'tls';
    $mail->SMTPAuth = true;
    $mail->Username = "My username";
    $mail->Password = "mypassword";
    $mail->setFrom('fromAddress@gmail.com', 'The name');
    $mail->addReplyTo('fromAddress@gmail.com', 'The name');
    $mail->addAddress('toAddress@gmail.com', 'Address');
    $mail->Subject = 'Contact us form sent';
    $mail->Body = 'This is a plain-text message body';        

    return "Email sent";
}

我根据他们的文档 here.

使用 composer 安装了 PHPMailer

当我点击 url 时,出现以下错误:

Fatal error: Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Class 
'Phpmailer\PHPMailer' not found in 
/var/www/html/htdocs/content/themes/amarula/resources/controllers/OtherController.php on line 
141

虽然出现错误消息,但我认为问题出在我如何尝试访问位于 vendor 文件夹中的邮件程序 class。

从我的应用程序的根目录到我的控制器,结构如下所示:

最终,PHPMailer class 位于 vendor 文件夹下,如下面的结构:

如何访问 class 并通过我的控制器发送电子邮件?

首先 - PHPmailer\PHPMailer 而不是 Phpmailer\PHPMailer (https://github.com/PHPMailer/PHPMailer/blob/master/src/PHPMailer.php)

其次,您试图在代码的命名空间中相关地查找 PHPMailer。 controllers/OtherController/PHPMailer/PHPMailer.php 当然,它不存在。

你应该使用\PHPMailer\PHPMailer通过绝对路径找到class

有关详细信息,请阅读命名空间 - https://www.php.net/manual/en/language.namespaces.rationale.php

你有这个导入:

use Phpmailer\PHPMailer;

这是不正确的;应该是:

use PHPMailer\PHPMailer\PHPMailer;

之所以"triple name"是因为它代表了属于PHPMailer组织的PHPMailer包中的PHPMailerclass

另一件很重要的事情 - 你不会收到任何消息,因为你从来没有打电话给 $mail->send()