如何在没有作曲家的情况下使用PHPMailer?

2022-08-30 21:00:03

我想使用最新的PHPMailer库,而不是搞砸Composer。我想要一个纯粹的 xcopy 部署,不要大惊小怪。require_once()

以下是我尝试执行的操作:

require_once("src/PHPMailer.php");
$mail = new PHPMailer;
$mail->isSMTP(); 
$mail->SMTPDebug = 2;
$mail->Host = "smtp.gmail.com"; 
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = $smtpUsername;
$mail->Password = $smtpPassword;
$mail->setFrom($emailFrom, $emailFromName);
$mail->addAddress($emailTo, $emailToName);
$mail->Subject = 'PHPMailer GMail SMTP test';
$mail->msgHTML("test body"); 
$mail->AltBody = 'HTML messaging not supported';

if(!$mail->send()){
    echo "Mailer Error: " . $mail->ErrorInfo;
}else{
    echo "Message sent!";
}

我收到错误消息:Fatal error: Class PHPMailer not found in [....]\EmailTester.php on line 21

第21行是这样的:$mail = new PHPMailer;

这行只是我的猜测: - 显然我需要包括一些文件或文件,但我无法分辨出哪个。require_once("src/PHPMailer.php");

我正在从github上的gmail示例中工作,该示例也不包含在zip下载中。但我可以在github中导航到它。在该示例文件中,它开始如下:

use PHPMailer\PHPMailer\PHPMailer;
require '../vendor/autoload.php';
$mail = new PHPMailer;

我在zip下载中没有看到任何文件,在谷歌搜索之后,我看到这意味着使用Composer。但是必须有某种方法可以简单地执行包含并获取我需要的文件。autoload.php

关于这个PHPMailer库,也许还有github,有一些事情让我感到困惑:

  1. 当我从 GitHub 下载 PHP Mailer 时,为什么下载的 zip 文件中没有包含这么多列出的文件和文件夹?

enter image description here

  1. 为什么他们引用zip下载中不存在的内容?autoload.php
  2. 显然,我不了解github的一些事情,但为什么不提供一个工作代码示例,而不是引用下载中不存在的依赖项,迫使人们在其他地方找到它,并希望他们能弄清楚如何回来并正确插入它?
  3. 在这个名为“使用PHP和Gmail发送电子邮件”的YouTube视频中,他从同一个地方下载了我下载的相同zip,但他的zip包含不同的文件,包括.为什么我得到的文件与他得到的文件完全不同?该视频发布于2017年3月4日 - 所以,不到1年前 - 从那时起它真的发生了这么多变化吗?PHPMailerAutoload.php

总而言之:如何在没有外部依赖项和安装(如 Composer)的情况下让 PHPMailer 工作,而是用于获取我需要的东西?require_once()


答案 1

以下是完整的工作示例(尽管您会看到一些必须定义和设置的变量):

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

require 'src/Exception.php';
require 'src/PHPMailer.php';
require 'src/SMTP.php';

$mail = new PHPMailer;
$mail->isSMTP(); 
$mail->SMTPDebug = 2; // 0 = off (for production use) - 1 = client messages - 2 = client and server messages
$mail->Host = "smtp.gmail.com"; // use $mail->Host = gethostbyname('smtp.gmail.com'); // if your network does not support SMTP over IPv6
$mail->Port = 587; // TLS only
$mail->SMTPSecure = 'tls'; // ssl is depracated
$mail->SMTPAuth = true;
$mail->Username = $smtpUsername;
$mail->Password = $smtpPassword;
$mail->setFrom($emailFrom, $emailFromName);
$mail->addAddress($emailTo, $emailToName);
$mail->Subject = 'PHPMailer GMail SMTP test';
$mail->msgHTML("test body"); //$mail->msgHTML(file_get_contents('contents.html'), __DIR__); //Read an HTML message body from an external file, convert referenced images to embedded,
$mail->AltBody = 'HTML messaging not supported';
// $mail->addAttachment('images/phpmailer_mini.png'); //Attach an image file

if(!$mail->send()){
    echo "Mailer Error: " . $mail->ErrorInfo;
}else{
    echo "Message sent!";
}

答案 2

这对我有用,我也从这个地址下载了phpmailer

https://sourceforge.net/projects/phpmailer/

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

require '/source/PHPMailer2/src/Exception.php';
require '/source/PHPMailer2/src/PHPMailer.php';
require '/source/PHPMailer2/src/SMTP.php';

推荐