PHP 致命错误:未捕获 PHPMailer\PHPMailer\Exception:SMTP 错误:无法连接到 SMTP 主机
P粉128563140
P粉128563140 2023-08-31 10:04:24
[PHP讨论组]

我尝试在 PHPMailer 中使用忘记密码功能,但收到此错误:

[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

这是我在forget.php中的代码:

<?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'])) {
            $email = $_POST['email'];
            $length = 50;
            $token = bin2hex(openssl_random_pseudo_bytes($length));
  
            if(email_exists($email)) {

                if($stmt = $connection->prepare("UPDATE users SET token = :token WHERE user_email = :email")) {
                    $stmt->bindValue(':token', $token);
                    $stmt->bindValue(':email', $email);
                    $stmt->execute([
                        'token' => $token,
                        'email' => $email
                    ]);
                    // $stmt->close();


                    /**
                     * 
                     * 
                     * Configure PHPMailer
                     * 
                     * 
                     */

                    $mail = new PHPMailer(true);

                    $mail->isSMTP();                                           
                    $mail->Host       = Config::SMTP_HOST;
                    $mail->Username   = Config::SMTP_USER;
                    $mail->Password   = Config::SMTP_PASSWORD;
                    $mail->Port       = 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;
                        } else {
                            echo "NOT SENT";
                    }

                }
            }
        }
    }

?>

    <main class="main__content_wrapper">
        
        <!-- Start breadcrumb section -->
        <section class="breadcrumb__section breadcrumb__bg">
            <div class="container">
                <div class="row row-cols-1">
                    <div class="col">
                        <div class="breadcrumb__content text-center">
                            <h1 class="breadcrumb__content--title mb-10">Mot de Passe Oublié</h1>
                            <ul class="breadcrumb__content--menu d-flex justify-content-center">
                                <li class="breadcrumb__content--menu__items"><a href="https://cliquedigitalepdo.com4muz.com/">Accueil</a></li>
                                <li class="breadcrumb__content--menu__items"><span class="text__secondary">Mot de Passe Oublié</span></li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
            <img class="breadcrumb__section--shape--bg" src="https://cliquedigitalepdo.com4muz.com/assets/img/other/breadcrumb-shape-bg.webp" alt="breadcrumb-img">
        </section>
        <!-- End breadcrumb section -->

        <!-- Start login section  -->
        <div class="login__section section--padding">
          <?php if(!isset($emailSent)): ?>
            <div class="container">
                <form  method="post">
                    <div class="login__section--inner">
                        <div class="row row-cols-md-1 row-cols-1">
                            <div class="col">
                                <div class="account__login">
                                    <div class="account__login--header mb-25">
                                        <h2 class="account__login--header__title h3 mb-10 text-center">Vous Avez Oubliez Votre Mot de passe ?</h2>
                                        <p class="account__login--header__desc text-center">Entrez votre adresse email</p>
                                    </div>
                                    <div class="account__login--inner">
                                        <label>
                                            <input name="email" class="account__login--input" placeholder="Adresse Email" type="email">
                                        </label>
                                        <button class="account__login--btn primary__btn" name="login" type="submit">Envoyer</button>
                                    </div>
                                </div>
                            </div>

                        </div>
                    </div>
                </form>
            </div>
              <?php else: ?>
                <h4>Veuillez Vérifier Votre Boîte Mail</h4>
              <?php endIf; ?>  
        </div>
        <!-- End login section  -->



       <!-- Start newsletter section -->
        <section class="newsletter__section newsletter__bg2 section--padding">
            <div class="container">
                <div class="row row-cols-md-2 row-cols-1 align-items-center">
                    <div class="col">
                        <div class="newsletter__content">
                            <h2 class="newsletter__content--title text-white">Rejoignez Notre Newsletter</h2>
                            <p class="newsletter__content--desc text-white">Devenez les premiers à découvrez toutes nos actualités
                  relatives au monde du digital et les nouvelles tendances</p>
                        </div>
                    </div>
                    <div class="col">
                        <div class="newsletter__subscribe">
                            <form class="newsletter__subscribe position__relative" action="#">
                                <label>
                                    <input class="newsletter__subscribe--input" placeholder="Entrez votre adresse email" type="email">
                                </label>
                                <button class="newsletter__subscribe--button style2 primary__btn" type="submit">S'inscrire
                                    <svg class="newsletter__subscribe--button__icon" xmlns="http://www.w3.org/2000/svg" width="14.34" height="14.34" viewBox="0 0 14.34 14.34">
                                        <path id="ic_near_me_24px" d="M17.34,3,3,9V9.78l5.449,2.111,2.1,5.449h.781Z" transform="translate(-3 -3)" fill="currentColor"/>
                                    </svg>
                                </button>
                            </form> 
                        </div>
                    </div>
                </div>
            </div>
        </section>
        <!-- End newsletter section -->

    </main>

    <?php include "includes/footer.php" ?>

我试图注释掉这两行:

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

它似乎无法连接到 SMTP,但我使用相同的 SMTP 配置从 contact.php 发送电子邮件并且它有效。

PS:值得注意的是,我在本地使用相同的代码并且它有效。 因此,该问题仅在线存在。

我对本地和在线应用程序使用相同的 PHP 版本 8.2。

P粉128563140
P粉128563140

全部回复(1)
P粉094351878

我已经整理好了。 实际上,forgot.php 第 60 行有一个拼写错误。

出于某种原因,我写了单引号。 所以,我替换了这个:

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

通过这个:

$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;

现在,它可以工作了,我可以发送电子邮件来重置密码。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号