SendGridを使ってメールサーバを構築せずにPHPからメールを送信する方法
2024/01/12
メールサーバを構築せずに独自ドメインのメールアドレスにてメール送信を行いたい。過去にGmailのSTPTサーバ経由でメール送信する方法をメモしたが、この方法だと送信元メールアドレスは当然Gmailアドレスになる。何か方法は無いか調べてみるとSendGridというサービスを利用する方法が簡単に実装できた。以下に対応方法をメモ。
SendGrid
SendGridとは
SendGridとはクラウドベースのメール配信サービスであり、メールサーバを構築せずともAPIやSMTP経由でメール送信が可能。また、迷惑メール判定されにくいっぽい(過去に通常のメール送信だと迷惑メール判定されたのにSendGrid経由だと迷惑メール判定されないというケースがあった)。
尚、12,000通/月までは無料で利用できる。
アカウント登録
新規登録ページよりアカウントを登録する。尚、アカウントは即時発行ではなく、翌営業日等に発行される点に注意する。
SMTP用パスワードの発行
ログインページよりログインし、左側のメニューの「Email API→Integration Guide→SMTP RelayのChoose」に進み「API Key Name」を入力し、「Create Key」をクリックするとパスワードが発行される。
尚、ホストは「smtp.sendgrid.net」、ユーザ名は「apikey」になる。
PHPMailerの準備
以下よりダウンロードし展開する。
https://github.com/PHPMailer/PHPMailer
srcディレクトリ内の「PHPMailer.php」「Exception.php」「SMTP.php」をアップロードする。もしくはsrcディレクトリごとアップロードでも良い。
ソースコード
<?php
require('./PHPMailer.php');
require('./Exception.php');
require('./SMTP.php');
// 文字エンコードを指定
mb_language('uni');
mb_internal_encoding('UTF-8');
// インスタンスを生成(true指定で例外を有効化)
$mail = new PHPMailer\PHPMailer\PHPMailer();
try {
$host = 'smtp.sendgrid.net';
$username = 'apikey';
$password = 'パスワード';
//差出人
$from = '差出人のメールアドレス';
$fromname = '差出人名';
//宛先
$to = '宛先のメールアドレス';
$toname = $to;
//件名・本文
$subject = 'subject';
$body = 'body';
//メール設定
$mail->SMTPDebug = 0; //デバッグ用
$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();
//送信成功時の処理
} catch (Exception $e) {
//送信失敗時の処理
}
各種メールアドレスやパスワード部分は適宜変更する。尚、送信元アドレスであるドメインのSPFレコードやMXレコードを設定しなくても送信が確認できた。
所感
私的にサーバ関連の中でもメールサーバに関しては苦手意識があった為、今回のような送信方法を知れたのは良かった。
関連記事
-
-
Mailtrap & PHPMailerでメールサーバ無しの環境でもメール送信テストを行う方法
開発環境等メールサーバが無い環境でメール送信テストを行う際にMailtrapとい ...
-
-
PHPMailerを使ってメールをSMTP送信する方法(Composer無し)
PHPでメールをSMTP送信したかった。また、レンタルサーバだったのでCompo ...
-
-
PHPでHTMLメールを送信する方法(PHPMailerあり無しの2パターン)
PHPでHTMLメールを送信したい。また、メール関連の機能を実装する際は環境によ ...
-
-
メールサーバーを構築せずにGmailのSMPTを使ってPHPでメール送信
メールサーバーが立てられなかったり、無料サーバーのため使えなかったりといった場合 ...
-
-
PHPでファイルを添付してメールを送信する方法(PHPMailer)
PHPでファイルを添付の上、メールを送信したかった。方法を探したところphpma ...