メールにてアラート通知を送信しようとしたがうまくいかず、google先生に聞いても情報はたくさんあるのですが
あらゆるサイトを確認しながら苦慮しました。理由は、サンプルのソースに記述間違いがあったり、そもそも自分自身の技術理解度が
低いことが要因でした。そのためソースも一つのプログラムファイルとして準備し、
まずは利用している環境で動かせることを目指しご紹介します。
<利用環境準備>
phpmailerをダウンロードしサーバ環境にコピーする。
ダウンロードは
GitHub PHPMailer のサイトより行います。
緑の「Code」をクリックし
Download Zip を選択する
ダウンロードするとフォルダ名は、「PHPMailer-master」なります。これを「PHPMailer」に変更します。
配置場所は、ドキュメントルートの直下(例:/www/もしくは、lamppは/htdocs/)へフォルダーごとコピー
します。
<メール送信サンプルプログラム>send.php
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer(true);
$mail_host = 'smtp.office365.com'; //利用している送信サーバを指定
$user = 'test@sample.jp'; //認証ユーザアドレス
$pass = '*********'; //認証ユーザパスワード
$from = 'test@sample.jp'; //送信元メールアドレス
try{
//メール設定
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->Host = $mail_host;
$mail->Username = $user;
$mail->Password = $pass;
$mail->SMTPSecure = 'tls';
$mail->Port = 587; //利用しているポート番号を指定
$mail->SMTPOptions = array( //メールサーバの仕様に合わせて設定
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->CharSet = "utf-8";
$mail->Encoding = "base64";
$mail->setFrom($from);
$mail->addAddress($to); //メール送信先
// $mail->addCC($cc); //CC送信先
$mail->Subject = $subject; //件名
$mail->Body = $body; //本文
$mail->send(); //メール送信
echo '成功';
}
catch (Exception ) {
echo '失敗: ', $mail->ErrorInfo; //エラー情報表示
echo ;
}
?>
<メール送信サンプルプログラム>mail.php
<?php
//PHPMailerライブラリー読込
include($_SERVER['DOCUMENT_ROOT'].'/PHPMailer/src/Exception.php');
include($_SERVER['DOCUMENT_ROOT'].'/PHPMailer/src/PHPMailer.php');
include($_SERVER['DOCUMENT_ROOT'].'/PHPMailer/src/SMTP.php');
//<送信内容>
$to = '送信先@sample.jp';
$cc = 'cc送信先@sample.jp';
$subject = 'ご挨拶';
$body ='〇〇様
いつもお世話になります。
この度は色々とありがとうございました。
今後ともよろしくお願います。
=========
管理人
';
include($_SERVER['DOCUMENT_ROOT'].'/mail/send.php'); //メール送信
?>
ドキュメントルートの直下に mail というフォルダーを作成します。。
次に、上記2つサンプルプログラム(mail.phpとsend.php)をこの作成したmailフォルダーに配置します。
尚、変数(ユーザ、メールサーバ等)はご自身の環境に合わせてください。
あとは、ブラウザより http://******.**.**/mail/mail.php を起動させることにより送信されます。
※今回send.phpにメールの環境(ユーザ情報やパスワード)を記載してますが、セキュリティーの観点にてこのような情報はドキュメントルートより
上位のフォルダーに配置して、include()で呼び出して利用することをお勧めします。
<cc送信の対応>
CCにて送信をする場合は、send.phpのPGの// $mail->addCC($cc);より //を削除してください。
$CCにメールアドレスの代入が無いとエラーになり送信できません。
<複数の送信先対応>
$to を下記のように複数送信先を設定し、$mail->addAddress($to);を下記のように書き替えて下さい。
CCも複数送信先がある場合は、同様に対応します。
// 例)カンマで区切る場合
$to = '送信先1@sample.jp,送信先3@sample.jp';
$to = explode(','$to);
for ($i = 0; $i < count($to); $i++) {
$mail->addAddress($to[$i]);
}
// 例)arrayの場合
$to = array
(
'送信先1@sample.jp'
,'送信先2@sample.jp'
};
for ($i = 0; $i < count($to); $i++) {
$mail->addAddress($to[$i]);
}
<添付ファイルの送信対応>
$mail->AddAttachment($file);の記述を$mail->send();の上部分に追加して下さい。
下記のサンプルは、添付が設定されているか否か、複数(array)か否かの判定も追加してます。
$file はファイルがあるパスからファイル名までを指定して下さい。
if (!empty($file)) {
if (is_array($file)) {
for (59 = 0; 59 < count($file); $i++) {
$mail->AddAttachment($file[$i]);
}
} else {
$mail->AddAttachment($file);
}
}