我想将最新的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");-显然我需要包含一个或多个文件,但我无法确定是哪个。

我正在从gmail example on github工作,该文件也不包含在zip下载中。但是我可以在github中导航到它。在该示例文件中,它是这样开始的:
use PHPMailer\PHPMailer\PHPMailer;
require '../vendor/autoload.php';
$mail = new PHPMailer;

我在zip下载中看不到autoload.php文件,并且在全部搜索之后,我发现这意味着使用Composer。但是必须有某种方法可以简单地进行包含并获取我需要的文件。

关于此PHPMailer库,一般来说,可能有些困扰我,也许还有 github :
  • 从GitHub下载PHP Mailer时,为什么下载的zip文件中没有包含这么多列出的文件和文件夹?

  • php - 如何在没有 Composer 的情况下使用PHPMailer?-LMLPHP
  • 为什么他们引用zip下载中不存在的autoload.php
  • 显然,我不了解github的某些知识,但是为什么不提供一个有效的代码示例,而不是引用下载中不存在的依赖项,迫使人们在其他地方找到它,并希望他们能弄清楚如何返回并恢复。正确插入?
  • 在YouTube上名为Send Emails with PHP & Gmail的视频中,他从相同的位置下载了我下载的相同zip文件,但他的zip文件包含了不同的文件,包括PHPMailerAutoload.php。为什么我得到的文件与他得到的文件完全不同?该视频于2017年3月4日发布-不到一年前-自那时以来真的发生了太大变化吗?

  • 总结:在没有外部依赖项和Composer之类的安装的情况下,如何才能使PHPMailer正常工作,而是使用require_once()来获得所需的信息?

    最佳答案

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

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

    关于php - 如何在没有 Composer 的情况下使用PHPMailer?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48128618/

    10-12 21:31