SendGrid の Node.js API を使ってメールを送信してみた

📅 August 27, 2019

⏱️2 min read

SendGrid とは

SendGridは、メール配信を行うことができるクラウドサービスです。 自前でメールサーバーを持たなくても、メールの配信が行えます。

メールの配信のみならず、メールの開封状況本文中リンクのクリック率 などをトラッキングできるので、とても便利です。

SendGridは多様なAPIを提供していて、C#、Go、Java、Node.js、PHP、Python、Ruby、 そしてWEB APIなど多様なAPIを提供しています。

今回は、Node.jsのAPIライブラリを用いてメールを送信してみたので、その備忘録を残します。

Node.js APIの公式リポジトリは以下です。

メール送信に必要なもの

SendGridのAPIキー

@sendgrid/mailのnpmライブラリ

  • npm install --save @sendgrid/mail

実際のコード例

// Mailer.ts
import * as sgMail from '@sendgrid/mail'
const API_KEY = '作成したAPIキー'
sgMail.setApiKey(API_KEY)

interface SgContent = {
  to: string[]
  from: string
  subject: string
  text: string
  html: string
}
export class SendgridMailer {
    _msg: SgContent
  constructor(msg: SgContent) {
    this._msg = msg
  }

  async sendMail() {
    await sgMail.sendMultiple(this._msg)
  }
}

上のようにクラスを定義することで、メーラーのインスタンスを作成して メールを送信することができます。

// index.ts
import { SendgridMailer } from '~/'
const mailer = new SendgridMailer({
  to: 'test@example.com',
  from: 'test@example.com',
  subject: 'こんにちは',
  text: 'これはテストの本文です',
  html: '<p>これは<strong>テスト</strong>の本文です</p>',
})
mailer.sendMail()

これでメールを送信することができます! WEBB APIでリクエストを送るよりもシンプルなので、メールを贈りたいだけなのであれば、 メールのラッパーを使うのが便利かと思います。

Sendgridにはまだまだ他の機能もあるので、触ったときに備忘録を 書いていこうと思います。