2016-11-17 3 views
1
Fatal error: Class 'PHPMailer' not found in C:\wamp\www\sendemail.php on line 13 

Это строка 13:Фатальная ошибка: Class 'PHPMailer' не найден в

$mail = new PHPMailer(); 

я уже исследовал, и они говорят, что вы должны иметь это:

require_once('class.pop3.php'); 
require_once('class.phpmailer.php'); 
require_once('class.smtp.php'); 
require_once('PHPMailerAutoload.php'); 

Но я уже есть те, и они находятся в той же папке, что и sendemail.php, но все равно та же ошибка.

<?php 
/** 
* This example shows settings to use when sending via Google's Gmail servers. 
*/ 
//SMTP needs accurate times, and the PHP time zone MUST be set 
//This should be done in your php.ini, but this is how to do it if you don't have access to that 
date_default_timezone_set('Etc/UTC'); 
require_once('class.pop3.php'); 
require_once('class.phpmailer.php'); 
require_once('class.smtp.php'); 
require_once('PHPMailerAutoload.php'); 
//Create a new PHPMailer instance 
$mail = new PHPMailer; 
//Tell PHPMailer to use SMTP 
$mail->isSMTP(); 
//Enable SMTP debugging 
// 0 = off (for production use) 
// 1 = client messages 
// 2 = client and server messages 
$mail->SMTPDebug = 2; 
//Ask for HTML-friendly debug output 
$mail->Debugoutput = 'html'; 
//Set the hostname of the mail server 
$mail->Host = 'smtp.gmail.com'; 
// use 
// $mail->Host = gethostbyname('smtp.gmail.com'); 
// if your network does not support SMTP over IPv6 
//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission 
$mail->Port = 587; 
//Set the encryption system to use - ssl (deprecated) or tls 
$mail->SMTPSecure = 'tls'; 
//Whether to use SMTP authentication 
$mail->SMTPAuth = true; 
//Username to use for SMTP authentication - use full email address for gmail 
$mail->Username = "[email protected]"; 
//Password to use for SMTP authentication 
$mail->Password = "password"; 
//Set who the message is to be sent from 
$mail->setFrom('[email protected]', 'name'); 
//Set an alternative reply-to address 
//$mail->addReplyTo('[email protected]', 'First Last'); 
//Set who the message is to be sent to 
$mail->addAddress('[email protected]', 'name'); 
//Set the subject line 
$mail->Subject = 'PHPMailer GMail SMTP test'; 
//Read an HTML message body from an external file, convert referenced images to embedded, 
//convert HTML into a basic plain-text alternative body 
$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); 
//Replace the plain text body with one created manually 
$mail->AltBody = 'This is a plain-text message body'; 
//Attach an image file 
//$mail->addAttachment('images/phpmailer_mini.png'); 
//send the message, check for errors 
if (!$mail->send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
    echo "Message sent!"; 
} 

Вот мой файл макета:

File layout

+0

У вас есть пространство имен в _sendemail.php_? – haitran

+0

Извините, что вы имеете в виду? – Zik

+0

Добавили ли вы файлы lib в sendemail.php? – Soliyappan

ответ

0

Добавить все эти дополнительные require линии не будет помогать; Просто загрузите автозагрузчик, как говорит оригинальный код примера. Попробуйте загрузить его из абсолютного пути:

require '/full/path/to/PHPMailerAutoload.php'; 

Если это работает, вы должны проверить, что ваш include_path настройки в php.ini содержит каталог, вы загружаете из - например, что он содержит . как один из пути.

Я вполне убежден, что это является проблемой окружающей среды/конфигурации, а не код, так что постарайтесь полностью минимальный сценарий, только это:

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

Если вы делаете новые разработки, вы действительно должны использовать composer в любом случае - он полностью решает проблемы, и вам никогда не придется беспокоиться о том, где ваши библиотеки снова.

+0

Я использую WAMP, и он уже знает, что я в папке «www», поэтому он все равно должен видеть «PHPMailerAutoload.php», но я все еще пытался использовать «www/PHPMailerAutoLoad.php», но он говорит об этом Fatal error: require(): Не удалось открыть окно «www/PHPMailerAutoload.php» (include_path = '; C: \ php \ pear') – Zik

+0

Мои окна включают в себя путь; Windows: "\ path1; \ path2" ; include_path = ".; C: \ php \ includes" – Zik

+1

Не предполагайте, проверьте. Попробуйте абсолютный путь. – Synchro

0

Я столкнулся с той же проблемой и смог ее решить, введя следующие две строки на самой вершине скрипта PHP, используемого для отправки почты, а не только в файлах I require d.

<?php 
use PHPMailer\PHPMailer\PHPMailer; 
use PHPMailer\PHPMailer\Exception; 
?> 

Сообщите мне, если он будет работать на вас.

Смежные вопросы