首頁  >  問答  >  主體

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”>
<div class="container">

Mot de Passe Oublié

    <li class="breadcrumb__content--menu__items"><a href="https://cliquedigitalepdo.com4muz.com/">Accueil</a></li>
  • Mot de Passe Oublié
  • </ul>
; <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”>
</表格> <?php else: ?>

Veuillez Vérifier Votre Boîte Mail

; <section class="newsletter__section newsletter__bg2section--padding"> <div class="container"> <div class="row row-cols-md-2 row-cols-1align-items-center">
<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>
P粉128563140P粉128563140386 天前502

全部回覆(1)我來回復

  • P粉094351878

    P粉0943518782023-09-01 09:13:56

    我已經整理好了。 實際上,forgot.php 第 60 行有一個拼字錯誤。

    出於某種原因,我寫了單引號。 所以,我替換了這個:

    $mail->SMTPSecure = 'PHPMailer::ENCRYPTION_SMTPS';

    透過這個:

    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;

    現在,它可以工作了,我可以發送電子郵件來重設密碼。

    回覆
    0
  • 取消回覆