でじぼうです。
メール配信を専門に行なってくれるAPI「SendGrid」についてご説明します。

この記事は下記の方がおすすめ!
- SendGridってなに?
- Makeってなに?
- API×ローコードツールの実装方法が知りたい!
SendGridって、そもそも何?

SendGridは、メール送信用のクラウドサービス(SaaS)です。
RESTful API や SMTP を使って、Webサービスやアプリケーションから簡単にメールを送信できます。
たとえば、お問い合わせフォームや会員登録後の自動返信メールを、SendGrid経由で確実にユーザーへ届けることができます。
アプリ側では、宛先や本文をSendGridに渡すだけで、あとはSendGridが送信処理を代行してくれる仕組みです。
SaaS(サース):完成されたアプリをインターネット経由で利用できるサービス
RESTful API:Webサービス同士がデータをやり取りするための「決まりごと」に基づいた通信方法
SMTP:メールを送信するための通信ルール(プロトコル)のひとつ
なぜSendGridを使うの?(エンジニア的メリット)
「メール配信くらい自分でプログラム書けばいいんじゃない?」と思う方もいるかもしれません。でも、実はSendGridを使うことには、エンジニアにとってたくさんのメリットがあるんです。
メリット1:メールの「到達率」が格段に上がる!
自分でメールサーバーを立ててメールを送ろうとすると、送信元IPアドレスの評価が悪くて迷惑メール扱いされてしまったり、受信側のサーバーからブロックされてしまったりすることがよくあります。
SendGridは、長年の運用実績と高い技術力で、メールが「迷惑メール」として扱われにくく、高い確率でユーザーの受信トレイに届くように工夫されています。
メリット2:大量のメール配信も楽々!
キャンペーンメールやニュースレターなど、一度に数千、数万といった大量のメールを送りたい場合、自分でシステムを組むのは非常に大変です。処理に時間がかかったり、サーバーがダウンしてしまったりするリスクもあります。
SendGridは、大量のメールを高速かつ安定して配信できるインフラを持っています。
メリット3:開発コスト・運用コストが大幅に削減できる!
もし自分でメール配信システムをゼロから作るとしたら、
◆ メールサーバーの構築・設定
◆ 迷惑メール対策
◆ エラーハンドリング
◆ 配信状況の監視
◆ セキュリティ対策
など、やるべきことが山積みです。これらをすべて自前で実装・運用するのは、時間も労力も莫大にかかります。
利用すれば、これらの面倒な作業をすべてSendGridに任せることができます。
SendGrid の仕組みをざっくり理解しよう!
SendGridを使ったメール配信の基本的な流れは以下のようになります。
① アプリケーションからSendGridへメールを送信する
SendGridが提供するAPI(HTTPリクエスト)を使ってメールの内容(宛先、件名、本文など)をSendGridに送ります。
② SendGridがメールを受け取る
SendGridは受け取ったメールの内容を解析し、適切な処理を行います。
③ SendGridがユーザーのメールサーバーへメールを送信する
SendGridは、迷惑メールと判断されないように様々な工夫を凝らしながら、ユーザーが使っているメールサービス(Gmail, Outlookなど)のサーバーへメールを送ります。
④ ユーザーのメールサーバーがメールを受信する
⑤ ユーザーの受信トレイにメールが届く!
API連携の実装方法
簡単にメールを送信できる公式APIが提供されています。Java、Python、Ruby、Node.js、PHPなど、主要なプログラミング言語に対応しています。
今回下記のように、お問い合わせ時の自動返信メールをNode.js
で実装しました。
環境変数は .env
ファイルに定義し、以下の2項目を読み込んで使用しています。
環境変数項目 | 値 |
---|---|
SENDGRID_API_KEY | SendGridで発行したAPIキー |
SENDGRID_FROM_EMAIL | 自動返信メールの送信元メールアドレス |
import { NextResponse } from "next/server";
import sgMail from "@sendgrid/mail";
export async function POST(req: Request) {
const data = await req.json();
const { name, email, phone, message } = data;
// 自動送信メールの件名と本文
const subject = "お問い合わせありがとうございます";
const mailBody = `${name}様
このたびはお問い合わせいただき、誠にありがとうございます。
以下の内容で受付いたしました。
---------------
お名前: ${name}
メール: ${email}
電話番号: ${phone}
メッセージ:
${message}
---------------
担当より折り返しご連絡させていただきます。
今しばらくお待ちください。`;
try {
// 自動送信メール
sgMail.setApiKey(process.env.SENDGRID_API_KEY!);
await sgMail.send({
from: process.env.SENDGRID_FROM_EMAIL!,
to: email,
subject,
text: mailBody,
});
return NextResponse.json({ message: "メール送信成功" });
} catch (error) {
return NextResponse.json(
{ message: "Slack送信に失敗しました" },
{ status: 500 }
);
}
}
コメント