PHP 致命错误:未捕获 PHPMailer\PHPMailer\Exception:SMTP 错误:无法连接到 SMTP 主机
P粉128563140
P粉128563140 2023-08-31 10:04:24
[PHP讨论组]
<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-&gt;smtpConnect() #1 /home/raso1970/cliquedigitalepdo.com4muz.com/vendor/phpmailer/phpmailer/src/PHPMailer.php(1678): PHPMailer\PHPMailer\PHPMailer-&gt;smtpSend() #2 /home/raso1970/cliquedigitalepdo.com4muz.com/vendor/phpmailer/phpmailer/src/PHPMailer.php(1516): PHPMailer\PHPMailer\PHPMailer-&gt;postSend() #3 /home/raso1970/cliquedigitalepdo.com4muz.com/forgot.php(75): PHPMailer\PHPMailer\PHPMailer-&gt;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;">&lt;?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; ?&gt; &lt;?php ob_start(); ?&gt; &lt;?php include &quot;config/db.php&quot;; ?&gt; &lt;?php include &quot;includes/header.php&quot;; ?&gt; &lt;!-- LOGIN --&gt; &lt;?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-&gt;prepare(&quot;UPDATE users SET token = :token WHERE user_email = :email&quot;)) { $stmt-&gt;bindValue(':token', $token); $stmt-&gt;bindValue(':email', $email); $stmt-&gt;execute([ 'token' =&gt; $token, 'email' =&gt; $email ]); // $stmt-&gt;close(); /** * * * Configure PHPMailer * * */ $mail = new PHPMailer(true); $mail-&gt;isSMTP(); $mail-&gt;Host = Config::SMTP_HOST; $mail-&gt;Username = Config::SMTP_USER; $mail-&gt;Password = Config::SMTP_PASSWORD; $mail-&gt;Port = Config::SMTP_PORT; $mail-&gt;SMTPSecure = 'PHPMailer::ENCRYPTION_SMTPS'; $mail-&gt;SMTPAuth = 'ssl'; $mail-&gt;isHTML(true); $mail-&gt;CharSet = 'UTF-8'; $mail-&gt;setFrom('contact@com4muz.com'); $mail-&gt;addAddress('contact@com4muz.com'); $mail-&gt;Subject = 'Veuillez réinitialiser votre mot de passe'; $mail-&gt;Body = '&lt;p&gt;Cliquez sur le lien pour réinitialiser votre mot de passe &lt;a href=&quot;https://cliquedigitalepdo.com4muz.com/reset.php?email='.$email.'&amp;token='.$token.' &quot;&gt;https://cliquedigitalepdo.com4muz.com/reset.php?email='.$email.'&amp;token='.$token.'&lt;/a&gt; &lt;/p&gt;'; if($mail-&gt;send()) { $emailSent = true; } else { echo &quot;NOT SENT&quot;; } } } } } ?&gt; &lt;main class=&quot;main__content_wrapper&quot;&gt; &lt;!-- Start breadcrumb section --&gt; &lt;section class=&quot;breadcrumb__section breadcrumb__bg&quot;&gt; &lt;div class=&quot;container&quot;&gt; &lt;div class=&quot;row row-cols-1&quot;&gt; &lt;div class=&quot;col&quot;&gt; &lt;div class=&quot;breadcrumb__content text-center&quot;&gt; &lt;h1 class=&quot;breadcrumb__content--title mb-10&quot;&gt;Mot de Passe Oublié&lt;/h1&gt; &lt;ul class=&quot;breadcrumb__content--menu d-flex justify-content-center&quot;&gt; &lt;li class=&quot;breadcrumb__content--menu__items&quot;&gt;&lt;a href=&quot;https://cliquedigitalepdo.com4muz.com/&quot;&gt;Accueil&lt;/a&gt;&lt;/li&gt; &lt;li class=&quot;breadcrumb__content--menu__items&quot;&gt;&lt;span class=&quot;text__secondary&quot;&gt;Mot de Passe Oublié&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;img class=&quot;breadcrumb__section--shape--bg&quot; src=&quot;https://cliquedigitalepdo.com4muz.com/assets/img/other/breadcrumb-shape-bg.webp&quot; alt=&quot;breadcrumb-img&quot;&gt; &lt;/section&gt; &lt;!-- End breadcrumb section --&gt; &lt;!-- Start login section --&gt; &lt;div class=&quot;login__section section--padding&quot;&gt; &lt;?php if(!isset($emailSent)): ?&gt; &lt;div class=&quot;container&quot;&gt; &lt;form method=&quot;post&quot;&gt; &lt;div class=&quot;login__section--inner&quot;&gt; &lt;div class=&quot;row row-cols-md-1 row-cols-1&quot;&gt; &lt;div class=&quot;col&quot;&gt; &lt;div class=&quot;account__login&quot;&gt; &lt;div class=&quot;account__login--header mb-25&quot;&gt; &lt;h2 class=&quot;account__login--header__title h3 mb-10 text-center&quot;&gt;Vous Avez Oubliez Votre Mot de passe ?&lt;/h2&gt; &lt;p class=&quot;account__login--header__desc text-center&quot;&gt;Entrez votre adresse email&lt;/p&gt; &lt;/div&gt; &lt;div class=&quot;account__login--inner&quot;&gt; &lt;label&gt; &lt;input name=&quot;email&quot; class=&quot;account__login--input&quot; placeholder=&quot;Adresse Email&quot; type=&quot;email&quot;&gt; &lt;/label&gt; &lt;button class=&quot;account__login--btn primary__btn&quot; name=&quot;login&quot; type=&quot;submit&quot;&gt;Envoyer&lt;/button&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/form&gt; &lt;/div&gt; &lt;?php else: ?&gt; &lt;h4&gt;Veuillez Vérifier Votre Boîte Mail&lt;/h4&gt; &lt;?php endIf; ?&gt; &lt;/div&gt; &lt;!-- End login section --&gt; &lt;!-- Start newsletter section --&gt; &lt;section class=&quot;newsletter__section newsletter__bg2 section--padding&quot;&gt; &lt;div class=&quot;container&quot;&gt; &lt;div class=&quot;row row-cols-md-2 row-cols-1 align-items-center&quot;&gt; &lt;div class=&quot;col&quot;&gt; &lt;div class=&quot;newsletter__content&quot;&gt; &lt;h2 class=&quot;newsletter__content--title text-white&quot;&gt;Rejoignez Notre Newsletter&lt;/h2&gt; &lt;p class=&quot;newsletter__content--desc text-white&quot;&gt;Devenez les premiers à découvrez toutes nos actualités relatives au monde du digital et les nouvelles tendances&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;col&quot;&gt; &lt;div class=&quot;newsletter__subscribe&quot;&gt; &lt;form class=&quot;newsletter__subscribe position__relative&quot; action=&quot;#&quot;&gt; &lt;label&gt; &lt;input class=&quot;newsletter__subscribe--input&quot; placeholder=&quot;Entrez votre adresse email&quot; type=&quot;email&quot;&gt; &lt;/label&gt; &lt;button class=&quot;newsletter__subscribe--button style2 primary__btn&quot; type=&quot;submit&quot;&gt;S'inscrire &lt;svg class=&quot;newsletter__subscribe--button__icon&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;14.34&quot; height=&quot;14.34&quot; viewBox=&quot;0 0 14.34 14.34&quot;&gt; &lt;path id=&quot;ic_near_me_24px&quot; d=&quot;M17.34,3,3,9V9.78l5.449,2.111,2.1,5.449h.781Z&quot; transform=&quot;translate(-3 -3)&quot; fill=&quot;currentColor&quot;/&gt; &lt;/svg&gt; &lt;/button&gt; &lt;/form&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/section&gt; &lt;!-- End newsletter section --&gt; &lt;/main&gt; &lt;?php include &quot;includes/footer.php&quot; ?&gt;</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粉128563140
P粉128563140

全部回复(1)
P粉094351878

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

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

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

通过这个:

$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;

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

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

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