SMTPサーバーの応答:530 5.7.0最初にSTARTTLSコマンドを発行する必要があります
PHPスクリプトファイルでmail()関数を使用すると、このエラーメッセージが表示されます...
私はGmail SMTPサーバーを使用し、GmailはSTARTTLSを使用しています。STARTTLSはスパムを防止するためにセキュアなSSLであり、contact.phpファイルでこれらのコマンドを既に使用しています
ini_set("SMTP","smtp.gmail.com");
ini_set("sendmail_from","<email-address>@gmail.com>");
sTARTTLSを有効にする、またはphp、iniファイルで構成するために使用できるコマンドは何ですか?
まず、PHPインストールにSSLサポートがあることを確認してください(phpinfo()
からの出力で "openssl"セクションを探してください)。
PHP.iniで次の設定を設定できます。
ini_set("SMTP","ssl://smtp.gmail.com");
ini_set("smtp_port","465");
私は次のような誤った応答をしました:
fputs($connection, 'STARTTLS'.$newLine);
間違った接続変数を使用していることが判明したため、変更する必要がありました:
fputs($smtpConnect, 'STARTTLS'.$newLine);
TLSを使用する場合は、忘れずにHELOを前後に配置してください。
fputs($smtpConnect, 'HELO '.$localhost . $newLine);
$response = fgets($smtpConnect, 515);
if($secure == 'tls')
{
fputs($smtpConnect, 'STARTTLS'.$newLine);
$response = fgets($smtpConnect, 515);
stream_socket_enable_crypto($smtpConnect, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);
// Say hello again!
fputs($smtpConnect, 'HELO '.$localhost . $newLine);
$response = fgets($smtpConnect, 515);
}
すぐに使用できるSwiftメーラーはSTARTTLSを実行できませんが、一部の そのためのパッチを作成している人がいます 。
パッチを当てるのは少し面倒であることがわかったので(おそらく間違った方法で行ったため)、ここでダウンロードできるように圧縮してあります: Swift Mailer with STARTTLS
私の場合、Swift Mailerも助けられませんでした。ここで解決策を見つけました: http://forum.powweb.com/showthread.php?t=73406 =-EHLOコマンドの後、STARTTLSコマンドを送信し、stream_socket_enable_crypto( $connection, true, STREAM_CRYPTO_METHOD_TLS_CLIENT );
で暗号化を有効にし、EHLOコマンドを再度有効にする必要があります。これにより、「頑固な」SMTPサーバーでメールを送信できます。
PHPMailer ライブラリがその種のSMTPトランザクションを処理できることを知っています。
また、sendmail-SSLライブラリーを使用した偽のsendmailがその役割を果たします。
私は自分のやり方を共有するつもりであり、以下を実装した後、それは私のために働いた:
Php.iniファイルを開き、 Gmail SMTP Settings からrefを取得して、それぞれのフィールドにすべての値を入力します
Smtpサーバーへの指示である[mail function]ステートメントからコメントを削除し、それらの値を一致させます。
また、sendmail SMTPサーバーは偽サーバーです。テキスト端末の横には何もありません(何か書いてみてください。:P)。 gmail s、tpを使用してメールを送信します。そのため、Gmail SMTP設定と一致するように正しく構成します。
smtp.gmail.com
Port: 587