phpmailer在下午2点之前的12/4工作

时间:2017-12-06 12:51:33

标签: php email ssl phpmailer

好吧所以我在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!';

    }
    ?>

更新:

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

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

在if(!$ mail line)之前。这是一个临时解决方案,同时我弄清楚为什么ssl证书从错误的位置拉出它以及在哪里设置正确的。来自/ usr / local / ssl然而这是一台Windows机器并且认为它是一台Linux机器。也没有使用任何预先打包的放大器系统。我使用所有单独的安装。仅apache / php / mysql。

供参考:

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

1 个答案:

答案 0 :(得分:0)

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