Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPMailer在邮件发送时挂起_Php_Smtp_Phpmailer - Fatal编程技术网

PHPMailer在邮件发送时挂起

PHPMailer在邮件发送时挂起,php,smtp,phpmailer,Php,Smtp,Phpmailer,我试图向用户发送电子邮件,但一旦执行了$mail->send(),就什么也没发生,网页就卡住了,挂起了5分钟 这是$mail设置: <?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require_once __DIR__ . '/../PHPMailer/src/Exception.php'; require_once __DIR__ . '/../PHPMailer/src/PHP

我试图向用户发送电子邮件,但一旦执行了
$mail->send()
,就什么也没发生,网页就卡住了,挂起了5分钟

这是
$mail
设置:

<?php

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

require_once __DIR__ . '/../PHPMailer/src/Exception.php';
require_once __DIR__ . '/../PHPMailer/src/PHPMailer.php';
require_once __DIR__ . '/../PHPMailer/src/SMTP.php';

class Email {
  private $mail;

  function __construct() {
    $config = parse_ini_file(__DIR__ . '/../../private/config.ini');
    $this->mail = new PHPMailer(true);
    $this->mail->IsSMTP();
    $this->mail->SMTPDebug = 4;   
    $this->mail->SMTPAuth = true;
    $this->mail->CharSet = 'utf-8';
    $this->mail->Secure = 'ssl';
    $this->mail->Host = $config['smtphost'];
    $this->mail->Port = 465;
    $this->mail->Username = $config['smtpusername'];
    $this->mail->Password = $config['smtppassword'];
  }
}
我研究过任何类似的问题及其解决方案,但这些似乎对我的问题都没有帮助

发送人:

$mail = new Email();
$mail->AddAddress($_POST['forgot_password']['email'], $foundEmail['username']);
$fromEmailAddress = ###MyHostEmailAddress###;
$fromName = ###name...###;
$mail->SetFrom($fromEmailAddress, $fromName);
$subject = ###subject..###;
$msgBody = $url;
$mail->Subject($subject);
$mail->Body($msgBody);
if($mail->Send())
  $validationMessage = 'TEST'

尝试在send函数之后返回一些内容,因为我认为(因此我不确定100%,但我遇到了这样的问题)调用send函数时phpmailer使用线程,因此它使用线程发送邮件,因此如果您的代码结束或没有返回,线程也将停止或终止。此外,如果send()的结果为真,则您可以转储该结果,这意味着您的配置正常,否则表示您的配置有问题

“我尝试向用户发送电子邮件,但一旦执行$mail->send(),则不会发生任何事”-代码在哪里?您如何使用所有这些?@FunkFortyNiner已编辑。此超时表示对邮件服务器的访问被阻止,或者邮件服务器已关闭-这不是您的脚本的错误。正如PHPMailer文档提到的,在页面提交期间,通过远程SMTP进行同步发送根本不适合使用。使用本地邮件服务器作为中继,或重新配置脚本以使用主机提供的不受阻止的邮件服务器(如GoDaddy要求)。@Synchro邮件服务器不工作。我通过SMTP在线工具(SMTPer.net)测试了它,并成功地收到了邮件。但是当我尝试用代码发送邮件时,我没有收到邮件。邮件服务器是否可以从网络外部访问与它是否可以从网络内部访问完全无关。例如,我可以从家里很好地访问gmail的服务器,但我无法从GoDaddy的网络中访问。使用《故障诊断与排除指南》中给出的建议进行测试,以正确诊断此问题。
$mail = new Email();
$mail->AddAddress($_POST['forgot_password']['email'], $foundEmail['username']);
$fromEmailAddress = ###MyHostEmailAddress###;
$fromName = ###name...###;
$mail->SetFrom($fromEmailAddress, $fromName);
$subject = ###subject..###;
$msgBody = $url;
$mail->Subject($subject);
$mail->Body($msgBody);
if($mail->Send())
  $validationMessage = 'TEST'