PHPMailer安装没有Composer

时间:2017-09-15 20:36:43

标签: php phpmailer

请原谅我的无知。 我试图在Linux上的PHP 5.6下安装PHPMailer 6.0.1。 我的PHP安装是远程的,我通过FTP管理我所有网站的PHP(我通常将软件包以.zips的形式下载到Win 10,解压缩,然后将结果FTP到我的网站空间)。

在安装PHPMailer的各种方法中,Composer是首选,但这是我解开的地方。没有任何Composer指令似乎适合这种工作方式 - 安装程序要我“选择你想要使用的命令行PHP”,但我没有本地PHP ... 令人讨厌的是,我看到安装了PHPMailer的composer.json文件等待使用。 但是没有PHPMailerAutoload.php(这是由Composer创建的吗?)

所以我尝试手动安装PHPMailer。我下载,解压缩和FTP将生成的目录上传到PHPMailer文件夹中的我的网站空间。然后,我在PHP代码的头部插入以下内容并在任何函数之外:

require_once 'PHPMailer/src/PHPMailer.php';
require_once 'PHPMailer/src/SMTP.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

使用'use'语句我得到语法错误意外'使用'(T_USE) ... 如果没有它们,我会尝试实例化: $ mail = new PHPMailer; 但这失败了'找不到'类'PHPMailer'

我做错了什么,我怎么能做得更好?

5 个答案:

答案 0 :(得分:9)

这不是特定于PHPMailer的 - 它只是您需要处理任何使用命名空间的无数PHP包所需要的东西。关于如何使用use的PHP文档是here

简短版本是,您需要在任何其他脚本之前放置namespaceuse指令,因此如果您只是颠倒命令的顺序,它应该有效:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require_once 'PHPMailer/src/PHPMailer.php';
require_once 'PHPMailer/src/SMTP.php';

顺便说一句,这是自述文件中使用的顺序示例以及PHPMailer提供的所有其他示例。您可能会发现the upgrade guide也很有用。

PHPMailerAutoload.php文件不再存在 - composer的自动加载器做得更好。 PHPMailer自己的composer.json文件用于解析应用程序自己的编写器文件的依赖关系和标记兼容性要求,也就是说,它用于告诉项目的作曲文件如何使用PHPMailer - 但不是您项目的作曲文件本身 - 每个你加载的包将有自己的。

在没有本地PHP实例的情况下进行开发是一项艰苦的工作 - 在我的实时服务器上进行开发是“灰心丧气”!如果您无法直接安装PHP,请使用VirtualBox或类似XAMPP的虚拟机在虚拟机中运行它。

答案 1 :(得分:4)

在版本6.02中,每个phpmailer模块都包含名称空间PHPMailer\PHPMailer声明,因此以下工作(不需要自动加载器,但此例程应位于/src文件夹中):

include($_SERVER['DOCUMENT_ROOT'].'/path_setup.php');
require_once ($_SERVER['DOCUMENT_ROOT'].'/php/PHPMailer/src/PHPMailer.php');
require_once ($_SERVER['DOCUMENT_ROOT'].'/php/PHPMailer/src/SMTP.php');
require_once ($_SERVER['DOCUMENT_ROOT'].'/php/PHPMailer/src/Exception.php');
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer(true);

答案 2 :(得分:0)

修改你require,并尝试像PHPMailer的wiki那样设置:

<?php
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;

Link of wiki

答案 3 :(得分:0)

没有作曲家就无法通过。...

警告:require(src / Exception.php):无法打开流:第5行的C:\ xampp \ htdocs \ testtest \ test.php中没有此类文件或目录

致命错误:require():无法在第5行的C:\ xampp \ htdocs \ testtest \ test.php中打开所需的'src / Exception.php'(include_path ='C:\ xampp \ php \ PEAR')

答案 4 :(得分:0)

首先创建一个文件夹src并创建Exception.php,PHPMailer.php,SMTP.php Liber,然后得到结果

<?php
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 = '@gmail.com';
$mail->Password = '';
$mail->setFrom('@gmail.com', '...');
$mail->addReplyTo('@gmail.com', ' Name');
$mail->addAddress('@gmail.com', '...');
$mail->Subject = 'PHPMailer GMail SMTP test';
$mail->msgHTML("Hello test SMTP 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!";
}
?>*strong text*