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でエンベロープFrom(Return-Path)を指定する方法
同じメールアドレスから送信したメールがmb_send_mail関数だと受信できる ...
-
PHPMailerでメールを送信する際にTLS / SSL暗号化させる方法
PHPMailerでメールを送信したところGmailで確認すると赤い鍵のようなア ...
-
PHPMailerでエラーメッセージを日本語で出力する方法
PHPMailerのGitHubページを見ていると言語設定についての案内を見つけ ...
-
PHPMailerでエラーメッセージ及びデバッグログの表示方法について
PHPMailerでエラーメッセージ及びデバッグログを表示させたいというケースが ...