メール配信の強い味方「SendGrid」を徹底解説!

メール配信の強い味方「SendGrid」 API
メール配信の強い味方「SendGrid」
この記事は約7分で読めます。

でじぼうです。

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

でじぼう
でじぼう

この記事は下記の方がおすすめ!

  • SendGridってなに?
  • Makeってなに?
  • API×ローコードツールの実装方法が知りたい!

SendGridって、そもそも何?

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_KEYSendGridで発行した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 }
    );
  }
}

コメント

タイトルとURLをコピーしました