79

PHP Mailerを介してGmail SMTPサーバーを使用してメールを送信したいと思います。

これは私のコードです

<?php
require_once('class.phpmailer.php');

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet="UTF-8";
$mail->SMTPSecure = 'tls';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->Username = 'MyUsername@gmail.com';
$mail->Password = 'valid password';
$mail->SMTPAuth = true;

$mail->From = 'MyUsername@gmail.com';
$mail->FromName = 'Mohammad Masoudian';
$mail->AddAddress('anotherValidGmail@gmail.com');
$mail->AddReplyTo('phoenixd110@gmail.com', 'Information');

$mail->IsHTML(true);
$mail->Subject    = "PHPMailer Test Subject via Sendmail, basic";
$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!";
$mail->Body    = "Hello";

if(!$mail->Send())
{
  echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
  echo "Message sent!";
}
?>

しかし、私はこの次のエラーを受け取ります

Mailer Error: SMTP Error: The following recipients failed: anotherValidGmail@gmail.com

SMTP server error: SMTP AUTH is required for message submission on port 587

私のドメインはvatandesign.irです

4

14 に答える 14

147
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "email@gmail.com";
$mail->Password = "password";
$mail->SetFrom("example@gmail.com");
$mail->Subject = "Test";
$mail->Body = "hello";
$mail->AddAddress("email@gmail.com");

 if(!$mail->Send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
 } else {
    echo "Message has been sent";
 }

上記のこのコードはテスト済みで、私にとってはうまくいきました。

必要だったのかもしれません$mail->SMTPSecure = 'ssl';

また、問題が発生する可能性があるため、そのアカウントで 2 段階認証がオンになっていないことを確認してください。

更新しました

$mail->SMTP を次のように変更してみてください:

$mail->SMTPSecure = 'tls';

一部の SMTP サーバーは接続をブロックすることに注意してください。一部の SMTP サーバーは接続をサポートしていませんSSL(またはTLS)。

于 2013-04-16T22:45:11.410 に答える
32

だから私は自分の「SMTP接続失敗」エラーを解決しただけで、他の人に役立つ場合に備えて解決策を投稿したかった.

PHPMailer のサンプル gmail.phps ファイルにある正確なコードを使用しました。MAMPを使用している間は簡単に機能し、個人サーバーに移動するとSMTP接続エラーが発生しました.

私が読んだすべてのスタック オーバーフローの回答と、PHPMailer のすべてのトラブルシューティング ドキュメントでは、PHPMailer の問題ではないと述べています。サーバー側の設定の問題でした。異なるポート (587、465、25) を試し、'SSL' と 'TLS' 暗号化を試しました。php.ini ファイルで openssl が有効になっていることを確認しました。ファイアウォールに問題がないことを確認しました。すべてがチェックアウトされましたが、まだ何もありません。

解決策は、次の行を削除する必要があったことです。

$mail->isSMTP();

今ではすべて動作します。理由はわかりませんが、うまくいきます。コードの残りの部分は、PHPMailer サンプル ファイルからコピーして貼り付けたものです。

于 2015-07-02T21:12:43.563 に答える
5

サーバーが Gmail SMTP サーバーへの接続を確立できていないようです。これをトラブルシューティングするためのヒントを次に示します。1) PHP で SSL が正しく構成されているかどうかを確認します (SSL を処理するモジュールは、デフォルトでは PHP にインストールされません。php.ini で構成を確認する必要があります)。2) ファイアウォールが必要なポート (ここでは 465 または 587) への発信を許可しているかどうかを確認します。そのためには、telnet を使用します。ポートが開かれていない場合は、構成をセットアップするために sysdmin からのサポートが必要になります。早く解決してほしいです!

于 2013-07-26T08:26:25.100 に答える