PHPMailer Ver.6.3.0にてメール送信時「Mailer Error: SMTP connect() failed.」エラーとなり、送信できない。
解決したいこと
ここに解決したい内容を記載してください。
PHPMailerを用いて、php上からメールを送信するシステムを作成しています。
メール送信時にSMTPエラーが発生しました。
解決方法を教えて頂きたいです・
発生している問題・エラー
●出ているエラーメッセージ
Message was not sent
Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
該当するソースコード
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<?php
// Phpmailerの読み込み
require_once ( './PHPMailer/src/PHPMailer.php' );
require_once ( './PHPMailer/src/SMTP.php' );
require_once ( './PHPMailer/src/POP3.php' );
require_once ( './PHPMailer/src/Exception.php' );
require_once ( './PHPMailer/src/OAuth.php' );
$to = $_POST['to'];
$subject = $_POST['subject'];
$body = $_POST['body'];
$headers = 'From:from@example.com'; //差出人
// 外部SMTPサーバーのホスト名
$smtp_host = "ssl://smtp.gmail.com";
// 外部SMTPのポート番号
$smtp_port = "587";
// 外部SMTPに接続するユーザー名
$smtp_user = "hogehoge@hogehoge.com";
// 外部SMTPに接続するパスワード
$smtp_password = "*********";
// Phpmailerを使ってメールを送信する関数の呼び出し
$res = phpmailersend ( $to, $subject, $body, $fromname, $fromaddress, $ccadress, $bccadress );
echo $res;
// SMTPを使ってメール送信関数
function phpmailersend ( $to, $subject, $body, $fromname, $fromaddress, $ccadress="", $bccadress="" ){
global $smtp_host, $smtp_port, $smtp_user, $smtp_password;
$to_array = explode ( ',', preg_replace ( '/\s/', '', $to ) );
$cc_array = explode ( ',', preg_replace ( '/\s/', '', $ccadress ) );
$bcc_array = explode ( ',', preg_replace ( '/\s/', '', $bccadress ) );
$mailer = new PHPMailer\PHPMailer\PHPMailer();
$mailer -> CharSet = "iso-2022-jp";
$mailer -> Encoding = "7bit";
$mailer -> IsSMTP();
$mailer -> Host = $smtp_host . ":" . $smtp_port;
$mailer -> SMTPAuth = TRUE;
$mailer -> Username = $smtp_user; // Gmailのアカウント名
$mailer -> Password = $smtp_password; // Gmailのパスワード
$mailer -> From = $fromaddress; // Fromのメールアドレス
$mailer -> FromName = mb_encode_mimeheader ( mb_convert_encoding ( $fromname, "JIS", "UTF-8" ) );
$mailer -> Subject = mb_encode_mimeheader ( mb_convert_encoding ( $subject, "JIS", "UTF-8" ) );
$mailer -> Body = mb_convert_encoding ( $body, "JIS", "UTF-8" );
foreach ( $to_array as $to ) {
$mailer -> AddAddress ( $to ); // TO
}
foreach ( $cc_array as $cc ) {
$mailer -> AddCC ( $cc ); // CC
}
foreach ( $bcc_array as $bcc ) {
$mailer -> AddBCC ( $bcc ); // BCC
}
if( !$mailer -> Send() ){
$message = "Message was not sent<br/ >";
$message .= "Mailer Error: " . $mailer->ErrorInfo;
} else {
$message = "Message has been sent";
}
return $message;
}
mb_language("Japanese");
mb_internal_encoding("UTF-8");
?>
</body>
</html>
自分で試したこと
Googleアカウントページ上で「安全性の低いアプリの許可: 有効」をONにした。
https://www.google.com/settings/security/lesssecureapps
PHPMailerはバージョンが古いと正常に動作しないという説明を見たので最新版に変更した。
(2021年3月9日現在Ver.6.3.0)
0 likes