1. ホーム
  2. php

PHPMailer で Gmail の SMTP サーバーを使用してメールを送信しようとすると、エラーが発生します。SMTP AUTH is required for message submission on port 587. どのように修正するのですか?

2023-08-25 13:52:32

質問

を使ってメールを送りたいのですが Gmail SMTP サーバを経由して PHPメーラー .

これは私のコードです。

<?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 = '[email protected]';
$mail->Password = 'valid password';
$mail->SMTPAuth = true;

$mail->From = '[email protected]';
$mail->FromName = 'Mohammad Masoudian';
$mail->AddAddress('[email protected]');
$mail->AddReplyTo('[email protected]', '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: [email protected]

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

私のドメインは vatandesign.ir

どのように解決するのですか?

$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 protected]";
$mail->Password = "password";
$mail->SetFrom("[email protected]");
$mail->Subject = "Test";
$mail->Body = "hello";
$mail->AddAddress("[email protected]");

 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 ) 接続を使用します。