PHP 致命錯誤:未擷取 PHPMailer\PHPMailer\Exception:SMTP 錯誤:無法連線到 SMTP 主機
<p>我嘗試在 PHPMailer 中使用忘記密碼功能,但收到此錯誤:</p>
<pre class="brush:php;toolbar:false;">[12-May-2023 17:53:32 UTC] PHP Fatal error: Uncaught PHPMailer\PHPMailer\Exception: SMTP Error: Could not connect to SMTP host . in /home/raso1970/cliquedigitalepdo.com4muz.com/vendor/phpmailer/phpmailer/src/PHPMailer.php:2233
Stack trace:
#0 /home/raso1970/cliquedigitalepdo.com4muz.com/vendor/phpmailer/phpmailer/src/PHPMailer.php(2019): PHPMailer\PHPMailer\PHPMailer->smtpConnect()
#1 /home/raso1970/cliquedigitalepdo.com4muz.com/vendor/phpmailer/phpmailer/src/PHPMailer.php(1678): PHPMailer\PHPMailer\PHPMailer->smtpSend()
#2 /home/raso1970/cliquedigitalepdo.com4muz.com/vendor/phpmailer/phpmailer/src/PHPMailer.php(1516): PHPMailer\PHPMailer\PHPMailer->postSend()
#3 /home/raso1970/cliquedigitalepdo.com4muz.com/forgot.php(75): PHPMailer\PHPMailer\PHPMailer->send()
#4 {main}
thrown in /home/raso1970/cliquedigitalepdo.com4muz.com/vendor/phpmailer/phpmailer/src/PHPMailer.php on line 2233</pre>
<p>這是我在forget.php中的程式碼:</p>
<pre class="brush:php;toolbar:false;"><?php
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
?>
<?php ob_start(); ?>
<?php include "config/db.php"; ?>
<?php include "includes/header.php"; ?>
<!-- LOGIN -->
<?php
require './vendor/autoload.php';
if(!isset($_GET['forgot'])) {
redirect('https://cliquedigitalepdo.com4muz.com/');
}if(IfItIsMethod('post')) {
if(isset($_POST['電子郵件'])) {
$email = $_POST['email'];
$長度= 50;
$token = bin2hex(openssl_random_pseudo_bytes($length));
如果(email_exists($電子郵件)){
if($stmt = $connection->prepare("更新使用者 SET token = :token WHERE user_email = :email")) {
$stmt->bindValue(':token', $token);
$stmt->bindValue(':email', $email);
$stmt->執行([
'令牌' => $代幣,
'電子郵件' => $電子郵件
]);
// $stmt->close();
/***
*
* 配置PHPMailer
*
**/
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = Config::SMTP_HOST;
$mail->使用者名稱 = Config::SMTP_USER;
$mail->密碼 = Config::SMTP_PASSWORD;
$mail->連接埠 = Config::SMTP_PORT;
$mail->SMTPSecure = 'PHPMailer::ENCRYPTION_SMTPS';
$mail->SMTPAuth = 'ssl';
$mail->isHTML(true);
$mail->CharSet = 'UTF-8';
$mail->setFrom('contact@com4muz.com');
$mail->addAddress('contact@com4muz.com');
$mail->Subject = 'Veuillez réinitialiser votre mot de passe';
$mail->Body = '<p>Cliquez sur le lien pour réinitialiser votre mot de passe
<a href="https://cliquedigitalepdo.com4muz.com/reset.php?email='.$email.'&token='.$token.' ">https://cliquedigitalepdo.com4muz.com/reset.php?email='.$email.'&token='.$token.'</a>
</p>';
if($mail->send()) {
$emailSent = true;
} 別的 {
回顯“未發送”;
}
}
}
}
}?>
<主類別=“main__content_wrapper”>
;
<img class=“breadcrumb__section--shape--bg” src=“https://cliquedigitalepdo.com4muz.com/assets/img/other/breadcrumb-shape-bg.webp” alt=“breadcrumb-img”>
</節>
<?php if(!isset($emailSent)): ?>
<div class="container">
<form method=“post”>
<div class="account__login">
<div class="account__login--header mb-25">
<h2 class="account__login--header__title h3 mb-10 text-center">您是 Avez Oubliez Votre Mot de passe 嗎?</h2>
<標籤>
<輸入姓名=“電子郵件” class="account__login--輸入" placeholder="電子郵件地址"類型=“電子郵件”>
</標籤>
<按鈕類別=“account__login--btn Primary__btn”名稱=“登入” type=“提交”>Envoyer
</表格>
<?php else: ?>
<div class="newsletter__content">
<h2 class="newsletter__content--title text-white">Rejoignez Notre Newsletter
Devenez les Premiers à découvrez toutes nos realités
數位世界的親戚與新趨勢</p>
<div class="newsletter__subscribe">
<form class=“新聞通訊__訂閱位置__相對”動作=“#”>
<標籤>
<input class="newsletter__subscribe--input"; placeholder="輸入電子郵件地址"類型=“電子郵件”>
</標籤>
<按鈕類別=“新聞通訊__訂閱--按鈕樣式2主要__btn” type=“提交”>S'寫入
<svg class="newsletter__subscribe--button__icon" xmlns=“http://www.w3.org/2000/svg”寬度=“14.34”高度=“14.34” viewBox="0 0 14.34 14.34">
<路徑id=“ic_near_me_24px” d=“M17.34,3,3,9V9.7815.449,2.111,2.1,5.449h.781Z”變換=“翻譯(-3 -3)” fill=“目前顏色”/>
</svg>
</按鈕>
</表格>
;
</section>
<!-- End newsletter section -->
</main>
<?php include "includes/footer.php" ?></pre>
<p>我試著註解掉這兩行:</p>
<pre class="brush:php;toolbar:false;">use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;</pre>
<p>它似乎無法連接到 SMTP,但我使用相同的 SMTP 配置從 contact.php 發送電子郵件並且它有效。 </p>
<p><strong>PS:</strong>值得注意的是,我在本地使用相同的程式碼並且它有效。
因此,該問題僅在線存在。 </p>
<p>我對本地和線上應用程式使用相同的 PHP 版本 8.2。 </p>