SendGridを初めて使用、テキストにしたいのに...余計なHTMLメールを消す方法
とあるシステム開発において、システムからメールを送信する機能が必要となり色々検討した結果、SendGridのAPIを使うことにしました。
スポンサーリンク
SendGridとは
メール配信サービスで、メールサーバの構築は不要です。
システムはAWSのEC2にWEBサーバを構築してます。
色々調べてみると「Amazon EC2 Eメール上限緩和申請」、「逆引き(rDNS)設定申請」などの手続きが必要なため、もっと楽な方法で実現したい。
お金もあまりかけたくない。
メール送信数は12,000通/月を超えなければ無料のプランを利用可能。
あとは一番大事なのが業務システムなのでメールが届かないといったことが無いようにしないといけない。
送り先には、携帯キャリアメールも存在するので弾かれないようしなければならない。
SendGridは弾かれたことを解析できることが出来ます。
メール到達率を向上させるための仕組みも色々用意されていて、説明が丁寧にされています。
あとはタイミング良くセミナーが開催されているのと、メールでの問い合わせに丁寧に対応いただけました。
セミナー後にはわからないことをしつこく聞いても付き合ってくれました。
SendGridでメール送信
システムの開発言語はPHPでLaravelフレームワークを使用してます。
まずは、Laravelで使えるようにします。
composer.jsonのrequireに”sendgrid/sendgrid”: “6.0”の行を追加します。
1 2 3 4 5 6 7 8 9 |
"name": "laravel/laravel", "description": "The Laravel Framework.", "keywords": ["framework", "laravel"], "license": "MIT", "require": { "tecnick.com/tcpdf": "6.*", "maatwebsite/excel": "1.*", "sendgrid/sendgrid": "6.0" }, |
「composer update」コマンドを実行して追加します。
APIキーが必要なのでAPIキーを取得します。
SendGrid正式ページのAPI Keysを見て取得します。
あとは以下のサンプルコードを実行。(↓これもSendGrid正式ページから取得)
123456789101112131415161718 <?php// using SendGrid's PHP Library// https://github.com/sendgrid/sendgrid-php// If you are using Composer (recommended)require 'vendor/autoload.php';// If you are not using Composer// require("path/to/sendgrid-php/sendgrid-php.php");$from = new SendGrid\Email("Example User", "test@example.com");$subject = "Sending with SendGrid is Fun";$to = new SendGrid\Email("Example User", "test@example.com");$content = new SendGrid\Content("text/plain", "and easy to do anywhere, even with PHP");$mail = new SendGrid\Mail($from, $subject, $to, $content);$apiKey = getenv('SENDGRID_API_KEY');$sg = new \SendGrid($apiKey);$response = $sg->client->mail()->send()->post($mail);echo $response->statusCode();print_r($response->headers());echo $response->body();
ここからが余計なHTMLメールを消す方法
“text/plain”を指定しているのに、余計なHTMLメールが付いてきてします。
↓の赤枠
これを無くすにはどうするかです。
SendGridログイン→SendGirdダッシュボード→Setting→Mail Settingと遷移。
Plain Contentを「ACTIVE」にします。
そうすると余計なHTMLメールが添付されなくなります。