速報

プレステージで最大約550万件の情報持ち出し|ロードサービスは代替運用で継続

CATEGORY

【PHPMailer】GmailのSMTP経由でメールを送信する

※本ページのリンクにはプロモーションが含まれています。

phpmailer

目次

PHPMailerを使って、フォーム等からGmailのSMTP経由でメールを送信する方法のご紹介です。

前回、「Office365のSMTP経由でメールを送信する」ではOffice365のSMTP経由でメールを送信する方法をご紹介しましたが、今回はGmailのSMTP経由で送信する方法をご紹介したいと思います。

本記事の内容

  • PHPMailerのダウンロード
  • PHPMailerの設置方法と読み込み方法
  • GmailのSMTP経由でメールを送信する際の設定
  • SMTP経由でメールが送信できない場合

では解説していきます。

スポンサーリンク

PHPMailerをダウンロードする

PHPMailerのライブラリは下記のURLからダウンロードすることができます。

PHPMailer

リンク先にある緑色の「Clone or download」を選択して「Download ZIP」を選択しましょう。

PHPMailerを設置して読み込む

PHPMailerはダウンロード方法によって読み込み方法が変わってきます。

Web

こちらはWebからダウンロードしたライブラリファイルを使用する方法です。ダウンロードした圧縮ファイルを解凍し、利用するサーバーに等で設置して下記の方法で読み込みます。

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

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

Composer

Composerを使用する場合の読み込み方法です。Composerでインストール、読み込む際はこちらの方法で記述します。

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

//Load Composer's autoloader
require 'vendor/autoload.php';

スポンサーリンク

GmailのSMTP経由でメールを送信する設定

PHPMailerを利用するファイルに設定を記述します。下記はWebからダウンロードしたライブラリを利用する方法になります。Composerを使われる場合は読み込み方法を変更しましょう。

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

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

$mail = new PHPMailer(true);

try {
  //Gmail 認証情報
  $host = 'smtp.gmail.com';
  $username = 'アカウント'; // example@gmail.com
  $password = 'パスワード';

  //差出人
  $from = 'メールアドレス';
  $fromname = '差出人名';

  //宛先
  $to = '宛先';
  $toname = '宛名';

  //件名・本文
  $subject = '件名';
  $body = '本文';

  //メール設定
  $mail->SMTPDebug = 2; //デバッグ用
  $mail->isSMTP();
  $mail->SMTPAuth = true;
  $mail->Host = $host;
  $mail->Username = $username;
  $mail->Password = $password;
  $mail->SMTPSecure = 'tls';
  $mail->Port = 587;
  $mail->CharSet = "utf-8";
  $mail->Encoding = "base64";
  $mail->setFrom($from, $fromname);
  $mail->addAddress($to, $toname);
  $mail->Subject = $subject;
  $mail->Body    = $body;

  //メール送信
  $mail->send();
  echo '成功';

} catch (Exception $e) {
  echo '失敗: ', $mail->ErrorInfo;
}

上記で無事送信されるかと思います。もしエラーが発生した場合は、下記の対応すると送信できるようになるかもしれません。

SMTP経由でメールが送信できない場合

アカウントもパスワードも正しく入力しているのに認証に失敗する場合は、下記でご紹介する対応を実施することでうまくいくかもしれません。

※検証はさくらインターネットのレンタルサーバで行っています。すべてのサーバでエラーが解消される保証はありません。

1安全性の低いアプリの許可を有効にする

Googleのアカウントを作成した後、デフォルトの状態では安全性の低いアプリの許可は無効になっています。セキュリティのレベルは下がりますが、こちらを有効にすることで解消される場合があります。設定はアカウントのトップページから「ログインとセキュリティ」を選択します。

ページをスクロールしていくと安全性の低いアプリの許可という項目がありますので、クリックして無効から有効に切り替えます。

有効にして設定が反映されるまでしばらく時間が掛かります。後日再度テストを実施することで、認証エラーが解消される可能性があります。

2セキュリティから端末のアクティビティーを許可する

Googleのアカウント認証をしようすると、アカウントページの上部に下記のような赤い通知が表示される場合があります。

不審なアクセスとして認識され、ログインをブロックされている状態ですね。もしサーバーのがブロックされている場合は、端末のアクセスを許可してあげることで認証が成功する場合があります。

Googleのアカウントトップページからログインとセキュリティを選択します。

ページを下にスクロールしていき、端末のアクティビティとセキュリティイベントのイベントの表示を選択します

最新のセキュリティイベントが開きますので、端末名のリンクをクリックします。下記の場合は「不明な端末」となっている箇所になります。

ブロックされている端末の情報が表示されますので、IPアドレスを確認し、サーバのIPアドレスであれば「はい、心当たりがあります」を選択します。

上記を実施することで、認証エラーが解消される可能性があります。

スポンサーリンク

最後に

以上、PHPMailerでGmailのSMTP経由でメールを送信する方法のご紹介でした!

PHPMailerは高機能で簡単に設定できるライブラリです。Gmailの認証を数行の記述を変更するだけで設定することができるため、Gmailを利用してフォームを構築される場合はぜひ活用していただければと思います。

この記事を書いた人

Ryohei

Webエンジニア / アプリ開発者 / 技術ブログ運営者

福岡のWeb制作会社に勤務するWebエンジニアです。10年以上にわたりWeb制作・開発に携わり、ヒアリングや進行管理から、コーディング、CMSの構築、システム開発、サーバーの構築・保守・運用まで、Webサイト制作の工程を幅広く担当しています。Webサイトは、これまでに100以上の構築・保守を手がけてきました。

個人でもWebサイトの制作・改修やWebアプリの開発・運用を行い、AIを活用した開発にも取り組んでいます。近年はWebセキュリティにも注力しています。

2015年から技術メディア「Into the Program」を運営し、実務や開発で得た知識をもとに、プログラミングの実装方法やWebサイトの運用・セキュリティ情報を発信しています。

主な分野
Webサイト構築・保守・運用 / HTML/CSS / JavaScript / PHP / WordPress / サーバー構築・保守・運用 / アプリ開発 / セキュリティ対策
資格・試験合格
情報セキュリティマネジメント試験
基本情報技術者試験
AWS認定ソリューションアーキテクト アソシエイト
PHP8技術者認定ウィザード
メディア運営
2015年〜

記事の作成・更新について

セキュリティ記事は、ベンダーの公式アドバイザリやCVE・JVNなどの一次情報を参照し、出典と情報確認日を記載します。実環境での検証を行った場合は、その環境と確認範囲を明示します。重要な追加情報や誤りを把握した場合は、内容を確認して追記・訂正します。

関連する記事

おすすめの書籍

キーワードから探す

スポンサーリンク

IPアドレス

インターネットなどのネットワークで、機器を識別するための番号。通信の宛先や送信元を表す。

詳しく見る

認証

アクセスしてきた相手が本人であることを確かめる仕組み。パスワードや生体情報、電子証明書などを使う。

詳しく見る

FTP

サーバーとの間でファイルを転送するための古くからある仕組み。通信が暗号化されないため、SFTPなどの利用が推奨される。

詳しく見る