このWebサイト ひつじ帳 は、管理者がWEB関連の技術をまとめた備忘録サイトです。 Linux,CentOS,PHP,MySQL,Blogger,JavaScript,CSS について記録しています。

PHPMailer-6.1からGmailへ接続しメール送信(Xampp対応)

PHPMailer のバージョン 6.1 から Gmail のSMTP に接続し
メール送信する方法です。

Windows の Xampp からの送信にも対応しています。

Windowsからのメール送信では
よく下記のメール送信プログラムが紹介されていることが多いです。
が、ここでは使用しません。

fake sendmail for windows

PHPMailer から 直接 Gmail の SMTP に接続して、メールを送信されます。

私は使い方をよく忘れるので、ここで残しておくことにします。


今回、私が動作させている環境は下記です。

環境

OS : Windows-10
PHP : PHP-7.3.2 (Xampp)
PHPMailer : 6.1.5


PHPMailer + Gmail

PHPMailer (Composer 未使用) + Gmail

Composer は使用しない方法です。

PHPのコード

<?php
/**
 * PHPMailer + SMTP + Composer未使用
 *
 * PHPMailer
 * https://github.com/PHPMailer/PHPMailer
 *
 * PHPMailer-6.1.5
 * https://github.com/PHPMailer/PHPMailer/releases/tag/v6.1.5
 *
 */

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

$current_dir = dirname(__FILE__);
require($current_dir . '/PHPMailer-6.1.5/src/Exception.php');
require($current_dir . '/PHPMailer-6.1.5/src/PHPMailer.php');
require($current_dir . '/PHPMailer-6.1.5/src/SMTP.php');

date_default_timezone_set('Asia/Tokyo');
mb_language('japanese');
mb_internal_encoding('utf-8');

// 例外を有効にする場合は、引数をTRUEにする
$mail = new PHPMailer();
CharSet = 'utf-8';


// <SMTPで送信する場合>
// Enable SMTP debugging (デバッグ出力させない場合は 0)
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;

// SMTP
$mail->isSMTP();

// hostname
$mail->Host = 'smtp.gmail.com';

// SMTP port (587)
$mail->Port = 587;

// 暗号化 (ssl|tls)
$mail->SMTPSecure = 'tls';

// SMTP認証
$mail->SMTPAuth = true;

// ユーザー名
$mail->Username = 'Gmailのユーザー名';

// パスワード
$mail->Password = 'Gmailのパスワード';

// オプション
$mail->SMTPOptions = [
	'ssl' => [
		'verify_peer' => false
		,'verify_peer_name' => false
		,'allow_self_signed' => true
	]
];
// </ SMTPで送信する場合>

// From address
$mail->setFrom('送信者メールアドレス', '送信者名');

// Reply-to address
$mail->addReplyTo('返信者メールアドレス', '返信者名');

// To address
$mail->addAddress('受信者メールアドレスm', '受信者名');

// 件名
$mail->Subject = 'PHPMailer SMTP GMail テスト';

// 本文 HTMLを無効 (PLAINのみ)
$mail->isHTML(FALSE);
$mail->Body = 'テスト';

// X-Mailer を非表示にする
$mail->XMailer = null;

// 送信
if ( ! $mail->send()) {
	echo "Mailer Error: " . $mail->ErrorInfo;
} else {
	echo "Message sent!";
}

?>



PHPMailer (Composer 使用) + Gmail

Composer を使用する方法です。
PHPのコード

<php
/**
 * PHPMailer + SMTP + Composer使用
 *
 * PHPMailer
 * https://github.com/PHPMailer/PHPMailer
 *
 *--------------------
 * vendor/composer.json
 *--------------------
 *	{
 *		"require": {
 *			"phpmailer/phpmailer": "~6.1.0"
 *		}
 *		,
 *		"config": {
 *			"vendor-dir": "./"
 *		}
 *	}
 *--------------------
 *
 */

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

// Composer 使用
require 'vendor/autoload.php';

date_default_timezone_set('Asia/Tokyo');
mb_language('japanese');
mb_internal_encoding('utf-8');

// 例外を有効にする場合は、引数をTRUEにする
$mail = new PHPMailer();

// 文字コード utf-8
$mail->CharSet = 'utf-8';


// <SMTPで送信する場合>
// Enable SMTP debugging (デバッグ出力させない場合は 0)
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;

// SMTP
$mail->isSMTP();

// hostname
$mail->Host = 'smtp.gmail.com';

// SMTP port (587)
$mail->Port = 587;

// 暗号化 (ssl|tls)
$mail->SMTPSecure = 'tls';

// SMTP認証
$mail->SMTPAuth = true;

// ユーザー名
$mail->Username = 'Gmailのユーザー名';

// パスワード
$mail->Password = 'Gmailのパスワード';

// オプション
$mail->SMTPOptions = [
	'ssl' => [
		'verify_peer' => false
		,'verify_peer_name' => false
		,'allow_self_signed' => true
	]
];
// </ SMTPで送信する場合>


// From address
$mail->setFrom('送信者メールアドレス', '送信者名');

// Reply-to address
$mail->addReplyTo('返信者メールアドレス', '返信者名');

// To address
$mail->addAddress('受信者メールアドレス', '受信者名');

// 件名
$mail->Subject = 'PHPMailer SMTP GMail テスト';

// 本文 HTMLを無効 (PLAINのみ)
$mail->isHTML(FALSE);
$mail->Body = 'テスト';

// X-Mailer を非表示にする
$mail->XMailer = null;

// 送信
if ( ! $mail->send()) {
	echo "Mailer Error: " . $mail->ErrorInfo;
} else {
	echo "Message sent!";
}

?>
  


よく忘れるのが、下記の部分です。

$mail->SMTPOptions = [
  'ssl' => [
    'verify_peer' => false
    ,'verify_peer_name' => false
    ,'allow_self_signed' => true
  ]
];

これを入れておかないと、SMTP送信でエラーが発生します。


Gmail の SMTP に接続せずにメール送信する場合は、
SMTP接続の部分を削除してあげれば、いけると思います。



以上

PHPMailer から Gmail 経由でメール送信する方法でした。
Windows-10 の PHP-7.3(Xampp) 環境以外からでも同様に動作可能です。


0 件のコメント:

人気記事

このブログを検索