如何使用 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()
。
我有一个网站使用名为(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()
。