PHPMailerの使い方(ローカル環境と本番環境)

PHPMailerとは

PHPMailerとは、ウェブサイトからメールを送ることができるPHPライブラリです。導入方法は省略します。以下の公式ページから導入してください。
github.com


ローカル環境でPHPMailerを使う

前提としてサーバーからメールを、迷惑メールとして分類されずに送るには、SMTP認証というものが必要です。SMTP認証とは、SMTPサーバでユーザーIDとパスワードを認証し、認証が確認された場合のみ、メールの送信を許可するという、迷惑メール発信規制手法の一つです。
参考サイト ↓
www.tiki.ne.jp
PHPMailerを使って、ウェブサイトからメールを送る際も、認証が必要です。しかしローカル環境では、いちいちメールサーバーを立てて、送信するのは面倒くさいと思います。そこで、Mailtrapというサービスを使います。無料で与えられたSMTPの情報でメールを送信でき、送信されたメールはMailtrapのページに届いて確認することができます。まずはMailtrapのアカウントを作ります。すると認証情報が表示されるので確認し、「My Inbox」→「Integrations」の「PHPMailer」を選択してコードをコピーして、以下のようにPHPMailerのコードを書いてメールを送信してください。届いたメールはMailTrapにログインしたページの「My Inbox」に届いています。
(「PHPMailer-master」ファルダとしてソースコードをダウンロードした場合)

<?php
use PHPMailer\PHPMailer\PHPMailer;use PHPMailer\PHPMailer\Exception;

require 'PHPMailer-master/src/Exception.php';
require 'PHPMailer-master/src/PHPMailer.php';
require 'PHPMailer-master/src/SMTP.php';

$mail->isSMTP();
$mail->Host = 'smtp.mailtrap.io';
$mail->SMTPAuth = true;
$mail->Port = 2525;
$mail->Username = 'SMTPサーバーのユーザ名';
$mail->Password = 'SMTPサーバーのパスワード';
//Recipients
$mail->setFrom('送り元アドレス', 'Mailer'); 
$mail->addAddress('送り先アドレス', 'Mr To');

//Content
$mail->CharSet = 'UTF-8'; //文字化け防止
$mail->Subject = '件名';
$mail->Body    = '内容';

//送信
$mail->send();
?>

本番環境でPHPMailerを使う(さくらのレンタルサーバーの場合)

さくらのレンタルサーバーのコントロール画面に入り、メールアドレスを作ります。コントロール画面で「メール」→「メール一覧」→「新規追加」→「アドレス入力」で新しくアドレスが追加できます。さくらの場合は、メールアドレスは「新しく追加したアドレス+@初期ドメイン」となります(「ドメイン/SSL」から参照可能)。初期ドメインとメールアドレス(+メールアドレスのパスワード)が準備できたら以下のようにコードを書いて、メールを送信します。

<?php

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

require 'PHPMailer-master/src/Exception.php';
require 'PHPMailer-master/src/PHPMailer.php';
require 'PHPMailer-master/src/SMTP.php';

$mail = new PHPMailer(true);

try {
   //ホスト
    $host = 'さくらのレンタルサーバの初期ドメイン';
    //メールアカウントの情報(さくらのレンタルサーバで作成したメールアカウント)
    $user = 'さくらのメールアドレス';
    $password = 'メールアドレスのパスワード';
    //差出人
    $from = 'さくらのメールアドレス';
    $from_name = '送り元の名前';

     //宛先
    $to = "送信先のメールアドレス";
    $to_name = '送信先の名前';
    $message = "内容"

    $mail = new PHPMailer(true);

    try {

      //$mail->SMTPDebug = 2; //デバッグ用
      $mail->isSMTP();
      $mail->SMTPAuth = true;
      $mail->Host = $host;
      $mail->Username = $user;
      $mail->Password = $password;
      $mail->SMTPSecure = 'tls';
      $mail->Port = 587;
      $mail->CharSet = "utf-8";
      $mail->Encoding = "base64";
      $mail->setFrom($from, $from_name);
      $mail->addAddress($to, $to_name);
      //Content
      $mail->CharSet = 'UTF-8'; //文字化け防止
      $mail->Subject = '件名';
      $mail->Body    = $message;

      //送信
      $mail->send();

?>