如何使用PHPMailer发送带有它们的邮件/ wordpress框架的电子邮件?

时间:2019-10-10 08:29:30

标签: php wordpress laravel phpmailer

我有一个网站使用名为(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类的方式。

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

enter image description here

最终,PHPMailer类位于供应商文件夹下,如以下结构所示:

enter image description here

如何访问该类并通过控制器发送电子邮件?

2 个答案:

答案 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()