我使用cakePHP 3,當我將我的應用程序移動到服務器時,它停止發送電子郵件, 我使用gmail smtp服務器。我嘗試使用SSL連接到端口465上的smtp.gmail.com,但仍無法正常工作。另外變量$mail->SMTPDebug = on;
正在造成一些麻煩。PHPmailer不使用gmail smtp與cakePHP 3
我的發送功能是這樣的:
public function send($to, $subject, $message) {
$sender = "[email protected]"; // this will be overwritten by GMail
$header = "X-Mailer: PHP/".phpversion() . "Return-Path: $sender";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: text/html; charset=UTF-8\r\n";
$mail = new \PHPMailer();
$mail->IsSMTP();
$mail->Host = "aspmx.l.google.com";
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Port = 25;
$mail->SMTPDebug = on; // turn it off in production
$mail->Username = "........";
$mail->Password = "........";
$mail->From = $sender;
$mail->FromName = "From Me";
$mail->AddAddress($to);
$mail->IsHTML(true);
$mail->CreateHeader($header);
$mail->Subject = $subject;
$mail->Body = nl2br($message);
$mail->AltBody = nl2br($message);
// return an array with two keys: error & message
if(!$mail->Send()) {
return array('error' => true, 'message' => 'Mailer Error: ' . $mail->ErrorInfo);
} else {
return array('error' => false, 'message' => "Message sent!");
}
}
}
我的錯誤是這樣的:
Use of undefined constant on - assumed 'on' [APP/Controller/Component/EmailComponent.php, line 30]
Undefined variable: errno [ROOT/vendor/phpmailer/class.smtp.php, line 182]
Undefined variable: errstr [ROOT/vendor/phpmailer/class.smtp.php, line 183]
是可能的虛擬主機上,我有頁阻止它?
謝謝你像下面
如果您的設備或應用程序支持SSL - 在端口465上連接到smtp.gmail.com。 如果您的設備或應用程序不支持SSL - 在端口25上連接到aspmx.l.google.com。 這就是我在https://support.google.com/a/answer/176600中看到了?hl = en 所以它取決於SSL支持 –
正確,並且問題中的腳本使用端口25上的SSL連接到'aspmx.l.google.com',即它是錯誤的。線索在主機名 - 它包含'mx',表明它是一個入站服務器,而不是出站。 Google不會允許您在沒有身份驗證的情況下發送消息(它們不是垃圾郵件網關),並且您不希望在沒有加密的情況下使用auth,因此端口和該主機都不存在問題。 – Synchro