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

新手上路,请多包涵

我想将最新的 PHPMailer 库与 require_once() 一起使用,而不是乱用 Composer。我想要一个简单的纯 xcopy 部署。

这是我正在尝试做的事情:

 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 下载中看不到 autoload.php 文件,在谷歌搜索之后我发现这意味着使用 Composer。但是必须有某种方法可以简单地执行包含并获取我需要的文件。

关于这个 PHPMailer 库和一般的 github ,有几件事让我感到困惑:

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

在此处输入图像描述

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

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

原文由 HerrimanCoder 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 335
2 个回答

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

 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!";
}

原文由 HerrimanCoder 发布,翻译遵循 CC BY-SA 3.0 许可协议

这对我有用,我也从这个地址下载了 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';

原文由 YakovGdl35 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏