この方法のメリットとしては PHP標準関数のみの利用なので
面倒な設定も不要ですぐにメールが送れます。
その一方で メールのパスワードなども不要なので
迷惑メールに分類されることも多いです。
自分にメール通知するときなどはお勧めですが、
ほかの方にメールを送信する場合は 次に紹介する SMTP経由の方法をお勧めします。
/* 文字化け防止 */
mb_language("ja");
mb_internal_encoding("UTF-8");
/* 送信先 */
$to = "[email protected]";
/* 題名 */
$subject = "テストメール";
/* 本文 */
$message = <<< EOD
これは テストメッセージです。
送信者の IP アドレスは {$_SERVER["REMOTE_ADDR"]} です。
EOD;
/* ヘッダー(送信元) */
$headers = "From: [email protected]\r\n".
"Bcc: [email protected]"."\r\n".
"Reply-To: [email protected]"."\r\n".
"X-Mailer: PHP/".phpversion();
/* 送信実行 */
if(mb_send_mail($to, $subject, $message, $headers)){
// 成功した場合の処理
}else{
// 失敗した場合の処理
}
ライブラリ「PHPMailer」 を用いた方法です。
認証を通すので 迷惑メールと認識される可能性も かなり低くなります。
ファイルの添付なども簡単にできてお勧めです。
GitHub からダウンロードしたファイルのうち、ディレクトリsrc
内にあるException.php
PHPMailer.php
SMTP.php
の 3ファイルが必要になります。
面倒であれば この後の サンプルファイルに添付されていますので
そちらをご利用ください。
このサンプルでは ご自身の情報に変更が必要な個所を
隅付き括弧【】
で表示してあります。
<?php
/* ライブラリ使用準備 */
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require __DIR__.'/Exception.php';
require __DIR__.'/PHPMailer.php';
require __DIR__.'/SMTP.php';
/* オブジェクト生成 */
$mail = new PHPMailer(true);
try {
/* サーバー設定 */
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->Host = "【SMTPサーバ名】";
$mail->Username = "【SMTPユーザー名】";
$mail->Password = "【SMTPパスワード】";
$mail->SMTPSecure = "【暗号化の種類:`tls`or`ssl`】";
$mail->Port = "【SMTPポート番号】";
/* 送受信者設定 */
$mail->setFrom("【送信元メールアドレス】", "【送信者名】");
$mail->addAddress("【送信先メールアドレス】");
$mail->addReplyTo("【返信先メールアドレス】", "【返信先名】");
/* コンテンツ設定 */
$mail->CharSet = "UTF-8";
$mail->Encoding = "base64";
$mail->Subject = "【メール件名】";
$mail->isHTML(【HTMLメール:`true`or`flase`】);
$mail->Body = "【メール本文】";
/* メール送信試行 */
$mail->send();
} catch (Exception $e) {
/* 例外処理 */
die("Message could not be sent. Mailer Error: ".$mail->ErrorInfo);
}
よく使う機能などを 自分のためにも 残しておきます。
私は システムから送信するメールは確認できるよう、
専用のメールアドレスに BCCとして 送信しています。
データベースに送信ログを残すのも面倒ですし、この方法の方が確実ですからね。
$mail->addBcc("【送信先メールアドレス】");
メソッドaddAddress
を増やすことで対応可能です。
引数を増やすわけではありません!
$mail->addAddress("【送信先メールアドレス1】");
$mail->addAddress("【送信先メールアドレス1】");
メソッドsetFrom
の 第2引数にしている 名前は 省略可能です。
$mail->setFrom("【送信先メールアドレス】");
ファイルの添付も メソッドaddAttachment
に 引数として ファイルパスを渡すだけです。
第2引数に ファイル名も指定することができます。
$mail->addAttachment("【ファイルパス】");
$mail->addAttachment("【ファイルパス】","【ファイル名】");
この他にも SMTPデバッグや HTMLメール関連 の機能などがありましたので、
必要に応じて 公式ページをご確認ください。
このファイルは 自分自身結構利用するので、
ライブラリのファイル込みなど 実用性の高いものになっています。
解凍した中身一式を設置して sendmail.php
を編集して
アクセスするだけで 試すことが可能です。
SMTPの方法は 検索すると トップに Qdmail が表示されますが、
最終更新が数年前で放置されているので 使用しない方が無難ですね。
私は これに結構 時間を費やしてしまいましたが、
比較的 新しいバージョンの PHP だと動作しない気がします。
PHP標準関数で メールを送信するにしても、
文字化けなどして なかなか上手くいかず時間を食うので、
毎回 このページからコピペしています。