Ich benutze CakePHP 3, als ich meine App auf den Server verschoben, hörte es auf, E-Mails zu senden, Ich benutze Google Mail SMTP-Server. Ich versuchte mit SSL connect zu smtp.gmail.com auf Port 465, immer noch nicht funktioniert. Auch Variable $mail->SMTPDebug = on;
macht einige Probleme.PHPmailer funktioniert nicht auf Live-Server mit Google Mail SMTP mit CakePHP 3
ist Meine Sendefunktion dieses:
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!");
}
}
}
mein Fehler ist dies:
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]
Ist ist möglich, dass Web-Hosting auf dem ich Seite es blockiert?
Danke
Wenn Ihr Gerät oder Ihre Anwendung SSL unterstützt, stellen Sie eine Verbindung mit smtp.gmail.com auf Port 465 her. Wenn Ihr Gerät oder Ihre Anwendung SSL nicht unterstützt, stellen Sie eine Verbindung zu ypmx.l.google.com auf Port 25 her. Dies ist was Ich habe in https://support.google.com/a/answer/176600 gesehen?hl = de Also es hängt von der SSL-Unterstützung –
Richtig, und das Skript in der Frage verbindet sich mit 'aspmx.l.google.com' mit SSL an Port 25, d.h. es ist falsch. Der Hinweis ist im Hostnamen - er enthält 'mx', was darauf hinweist, dass es sich um einen eingehenden Server handelt, nicht um einen ausgehenden. Google lässt Sie nicht ohne Authentifizierung senden (sie sind kein Spam-Gateway), und Sie möchten keine Authentifizierung ohne Verschlüsselung verwenden, so dass Port und dieser Host nicht in Frage kommen. – Synchro