勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

Mailtrap & PHPMailerでメールサーバ無しの環境でもメール送信テストを行う方法

  PHP

開発環境等メールサーバが無い環境でメール送信テストを行う際にMailtrapというサービスを使うと良いと聞いた。どんなものか調べてみたところSMTPサーバ及び受信ボックスを用意してくれるサービスというもの。実際にどのような感じが試してみたいのでPHPMailerを使って送信テストする方法をメモ。

 

Mailtrapの準備

公式サイト

https://mailtrap.io

公式サイト右上の「Sign UP」からアカウント登録しログインすること。

PHPMailer用のソースをコピー

ログイン後、左側メニューの「Email Testing→Inboxes」に進み「Integrations」プルダウンで「PHPMailer」を選択するとPHPMailer用のソースが表示されるので「Copy」ボタンをクリックしてコピーしておく。

 

PHPMailerの準備

PHPMailerの用意

今回はcomposerは使わず以下からダウンロードした。

https://github.com/PHPMailer/PHPMailer

zipファイルを解凍後に以下3ファイルをアップロードする。

  • PHPMailer.php
  • Exception.php
  • SMTP.php

 

ソースコード

<?php
include('./PHPMailer.php');
include('./Exception.php');
include('./SMTP.php');

date_default_timezone_set('Asia/Tokyo');
mb_language("japanese");
mb_internal_encoding("UTF-8");

$phpmailer = new PHPMailer\PHPMailer\PHPMailer();
$phpmailer->isSMTP();
$phpmailer->Host = 'sandbox.smtp.mailtrap.io';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 2525;
$phpmailer->Username = 'xxxxxxxxx';
$phpmailer->Password = 'xxxxxxxxx';

$phpmailer->setFrom('from@test.com');
$phpmailer->addAddress('to@test.com');

$phpmailer->CharSet = 'UTF-8';
$phpmailer->Subject = 'メールのタイトル';
$phpmailer->Body = 'メールの本文';

if( !$phpmailer->Send() ){
    echo "送信失敗<br/ >";
    echo "エラー内容: " . $phpmailer->ErrorInfo;
} else {
    echo "送信成功";
}

「Host / Port / Username / Password」は先ほどコピーしたソースコードのものを使うこと。

尚、送信成功するとMailtrapに以下のように表示される。

 

所感

送信テストの際、今までは自前のメールアドレスで受信しており、テストメールを毎回削除するのが地味に面倒だったがその辺りも解決できそう。

もちろん本番環境だとちゃんと送信テストを行う必要はあるもののテスト環境の場合はこのような方法もありだと思った。

 - PHP

  関連記事

PHPMailerでメールを送信する際にTLS / SSL暗号化させる方法

PHPMailerでメールを送信したところGmailで確認すると赤い鍵のようなア ...

SendGridを使ってメールサーバを構築せずにPHPからメールを送信する方法

メールサーバを構築せずに独自ドメインのメールアドレスにてメール送信を行いたい。過 ...

【2024年版】PHPMailerでGmailのSMTPサーバを経由してメールを送信する方法

だいぶ前に同じようなことをメモしたが、そちらの方法だと送信できずエラー内容を見た ...

PHPMailerを使ってメールをSMTP送信する方法(Composer無し)

PHPでメールをSMTP送信したかった。また、レンタルサーバだったのでCompo ...

メールサーバーを構築せずにGmailのSMPTを使ってPHPでメール送信

メールサーバーが立てられなかったり、無料サーバーのため使えなかったりといった場合 ...