我有一个网站使用名为(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。
点击网址时,出现以下错误:
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
尽管出现错误消息,但我认为问题出在我尝试访问位于供应商文件夹中的mailer类的方式。
从应用程序的根目录到控制器,其结构如下图所示:
最终,PHPMailer类位于供应商文件夹下,如以下结构所示:
如何访问该类并通过控制器发送电子邮件?
答案 0 :(得分:1)
首先-用PHPmailer \ PHPMailer代替Phpmailer \ PHPMailer (https://github.com/PHPMailer/PHPMailer/blob/master/src/PHPMailer.php)
第二,您尝试在代码的命名空间中重新查找PHPMailer。
controllers/OtherController/PHPMailer/PHPMailer.php
而且,它当然不存在。
您应该使用\PHPMailer\PHPMailer
通过绝对路径查找课程
有关更多信息,请阅读有关名称空间的信息-https://www.php.net/manual/en/language.namespaces.rationale.php
答案 1 :(得分:1)
您已导入:
use Phpmailer\PHPMailer;
那是不正确的;应该是:
use PHPMailer\PHPMailer\PHPMailer;
使用此“三重名称”的原因是,它表示属于PHPMailer组织的PHPMailer软件包中的PHPMailer类。
另一件事很重要-您不会收到任何消息,因为您从未打电话给$mail->send()
。