PHPMailer выдает ошибку при поиске PHPMailer \ PHPMailer \ Exception, которого нет в моем коде?

Нужна помощь с кодом PHPMailer. Ниже приведена ошибка из журнала, которая появляется при отправке формы. Прочитал все посты, ссылающиеся на эту же ошибку, но моя проблема в другом, поскольку мне не разрешено использовать Composer на общем сервере моей хостинговой компании. Я следую за ручной установкой файлов.

Вот ошибка файла журнала:

[18-Dec-2018 22:30:51 UTC] PHP Fatal error:  Uncaught Error: Class 'PHPMailer\PHPMailer\Exception' not found in /home1/example/public_html/PHPMailer/src/PHPMailer.php:1720
Stack trace:
#0 /home1/example/public_html/PHPMailer/src/PHPMailer.php(1518): PHPMailer\PHPMailer\PHPMailer->mailSend('Date: Tue, 18 D...', '<html>".$feedba...')
#1 /home1/example/public_html/PHPMailer/src/PHPMailer.php(1352): PHPMailer\PHPMailer\PHPMailer->postSend()
#2 /home1/example/public_html/adoption/sendEmailTest.php(22): PHPMailer\PHPMailer\PHPMailer->send()
#3 {main}
thrown in /home1/example/public_html/PHPMailer/src/PHPMailer.php on line 1720

Вот код из строк 1719-1721, но этот файл является OOB для PHPMailer:

if (!$result) {
throw new Exception($this->lang('instantiate'), self::STOP_CRITICAL);
}

Вот мой код php файла:

<?php

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

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

if(isset($_POST['submit'])){
$email = $_POST['email'];
$name = $_POST['name'];
$feedback = $_POST['feedback'];

$mail = new PHPMailer();

$mail->setFrom('myname@example.org', 'Org Name');
$mail->addReplyTo($email, $name);
$mail->addAddress('myname@example.org', 'Org Name');

$mail->isHTML(true);

$mail->Subject = 'Application Submission';
$mail->Body = '<html>".$feedback."</html>';

if (!$mail->send())
{
echo $mail->ErrorInfo;
}
}

?>

Вот код формы, так что у вас есть:

    <form action="sendEmailTest.php" method="post" name="adoption">

<table width="700" border="0" cellspacing="3" cellpadding="3">
<tr>
<td colspan="2" bgcolor="#FFFFCC"><h2><strong>Form Test</strong></h2></td>
</tr>
<tr>
<td width="183"><label>Name: </label></td>
<td width="496"><input name="name" type="text" required="required" id="name" value="" size="75" /></td>
</tr>
<tr>
<td><label>Email Address: </label></td>
<td><input type="text" name="email" id="email" value="" size="75" /></td>
</tr>
<tr>
<td><label>Feedback</label></td>
<td><textarea name="feedback" id="feedback" cols="45" rows="5"></textarea></td>
</tr>
<tr>
<td><input type="submit" value="Submit Form" name="submit"/></td>
</tr>
</table>
</form>

0

Решение

В вашем коде отсутствуют необходимые классы в начале.

Ваш пример включает в себя:

<?php

use PHPMailer\PHPMailer\PHPMailer;
require '../PHPMailer/src/PHPMailer.php';

Вам необходимо добавить:

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

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

Это должно решить ошибки PHP, которые вы упомянули в своем посте.

0

Другие решения

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

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

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

Что касается вашего комментария к вопросу, вы не используете исключения в своем коде, но класс PHPMailer использует их внутренне. Оставив аргумент исключений контроллера пустым, вы не отключите исключения PHPMailer. Если вы посмотрите через источник, вы увидите несколько мест, где throw new Exception... завернут в if ($this->exceptions) { }и другие места, куда он их бросит независимо.

Исключение, которое вы получили после добавления операторов require / use, на самом деле не является новой проблемой, это исключение, которое изначально пыталось вызвать, когда вы получили ошибку «class not found».

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector