好的,即时通讯在30小时后不停地尝试找出此代码,以了解为什么它突然冒出来就停止工作了,它现在真的让我生气。

它是生产服务器,直到标题时间都可以正常工作。

这是我的testemail.php,它在此日期时间之前有效。

<?php
require 'include\smtp\class.phpmailer.php';
require 'include\smtp\class.smtp.php';
set_time_limit(3600);
date_default_timezone_set('Etc/UTC');
$mail = new PHPMailer();  // create a new object

$mail->Timeout = 3600;
$mail->IsHTML();
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 4;  // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true;  // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->Username = "email";
$mail->Password = "pass";
$mail->SetFrom( "email",  "Do Not Reply");
$mail->Subject = "test";
//$mail->AddAttachment($dir.str_replace("/", "\\", $row2["eventpdf"]));
$mail->Body = "testing";
$mail->AddAddress("email");

if(!$mail->Send()) {
    $error = 'Mail error: '.$mail->ErrorInfo;
    } else {
    $error = 'Message sent!';

    }
    ?>


更新:

我将我的class.phpmailer.php和class.smtp.php从github更新为vs 5.2.26,并应用了

$mail->SMTPOptions = array(
'ssl' => array(
    'verify_peer' => true,
    'verify_peer_name' => false,
    'allow_self_signed' => true
)
);


就在if(!$ mail行之前。这是一个临时解决方案,而我想知道为什么ssl证书会从错误的位置拉出它,以及在哪里设置适当的位置。它从/ usr / local / ssl那里拉出东西是Windows机器,认为它是Linux机器,也不使用任何预包装的amp系统,im仅使用所有单独的安装程序,apache / php / mysql都单独使用。

费:

设置为true的verify_peer是导致问题的原因。您可以将其他任何内容更改为true / false,然后它将发送。一旦将verify_peer更改为true,它就会停止。

最佳答案

正确修复。在“ PHPMailer故障排除”下,下载一个新的cacert.pem,并在php.ini内部,您需要滚动到底部(至少我的位置在底部)或搜索cafile或capath并添加路径和文件。文件必须是它的完整路径,因为它给了我一个错误,不是。像c:\ certs \ cacert.pem一样,然后重新启动Apache服务器,然后将verify_peer更改为true或删除所有smtpoptions,它会再次发送带有证书的电子邮件。不确定它是否可以与其他任何证书一起使用,但不能与我从GitHub上的PHPMailer页面进行故障排除列出的站点下载的证书一起使用。

关于php - phpmailer截至美国东部标准时间下午2点之前的12/4,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47674752/

10-12 12:52