私はcakePHP 3を使用しています。アプリをサーバーに移動したときに電子メールの送信が停止しました GmailのSMTPサーバーを使用しています。 SSLを使用してポート465のsmtp.gmail.comに接続しようとしましたが、まだ動作していません。変数$mail->SMTPDebug = on;
もいくつかの問題を引き起こしています。cakemailPHPでGmailを使用しているライブサーバーでPHPmailerが動作しません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]
されていますが、私はページを持っている上でのウェブホスティングは、それをブロックしている可能性がありますか?それが動作するようになりました
$mail->Host = "smtp.gmail.com";
$mail->Port = 587;
:
はあなたに以下のような
デバイスまたはアプリケーションが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では、認証なしで(スパムゲートウェイではない)送信することはできません。また、暗号化なしで認証を使用したくないため、ポートとそのホストの両方が問題になりません。 – Synchro