我嘗試使用Gmail的的SMTP服務器與發送失敗。有包含在PHPMailer的這個確切的情況相當明顯的例子,但下面這之後我指定它後得到一個錯誤,因爲(它看起來對我來說,)主機已經改變了我的本地主機名?PHPMailer的是改變了我的SMTP主機到我的hostname,使其
錯誤:
Peer certificate CN=`myhostname' did not match expected CN=`smtp.gmail.com'
[/app/versions/dev/vendor/phpmailer/phpmailer/src/SMTP.php line 389]
代碼:
$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPOptions = [
'ssl' => [
'verify_peer' => false,
// 'verify_peer_name' => false,
// 'allow_self_signed' => true
]
];
$mail->SMTPDebug = 3;
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'mypass';
$mail->AddAddress('[email protected]', 'My Name');
$mail->Subject = 'subject';
$mail->MsgHTML($message);
echo $mail->send();
exit;
我可以在PHPMailer.php看到:1772,它回落到serverHostname()如果未指定$直升機的,但是當我看看$ Helo的docblock,它指的是不存在的$ Hostname。
myhostname,[email protected],mypass都是匿名方式。
嘗試刪除你的'$ mail-> SMTPOptions' – cmorrissey
@cmorrissey它失敗,沒有ssl-> verify_peer = false',並給我大量的破碎字符,甚至沒有真正的錯誤消息。我讀過它的證書錯誤,但它不是我可以修復的,因爲這是本地的,所以唯一的其他(未推薦的)解決方法就是添加它。 – tom
ahhhh其實如果你看看gmail的例子https://github.com/PHPMailer/PHPMailer/blob/master/examples/gmail.phps我認爲你需要使用'$ mail-> Host = gethostbyname('smtp.gmail .com');'而不是你的主機線我不認爲你的網絡允許通過IPv6的SMTP – cmorrissey