メール送信する方法です。
Windows の Xampp からの送信にも対応しています。
Windowsからのメール送信では
よく下記のメール送信プログラムが紹介されていることが多いです。
が、ここでは使用しません。
fake sendmail for windows
PHPMailer から 直接 Gmail の SMTP に接続して、メールを送信されます。
私は使い方をよく忘れるので、ここで残しておくことにします。
今回、私が動作させている環境は下記です。
環境
OS : Windows-10PHP : 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
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 件のコメント:
コメントを投稿