Twilio SendGridでNode.jsを使いEメールを簡単に送信(SMTP編)
読む所要時間: 11 分
アプリケーション開発におけるメールサービスに関して言えば、Twilio SendGridなどのクラウド側でホストされているメールAPIを使用し、ニーズに合わせて設定をカスタマイズするとよいでしょう。ただし、既存のプラットフォームでSMTP(Simple Mail Transfer Protocol)がすでに有効な場合は、広く普及しているメール標準であるSMTP経由でメールを送信する方法を採用したい場合もあるでしょう。幸いなことに、Twilio SendGridではSMTPリレーサービスを提供していますので、自前のサーバーをセットアップする必要はありません。また、これまでどおり、詳細なメトリクス、分析のトラッキング、優れた配信率の恩恵を受けることができ、X-SMTPAPIヘッダーを介してSendGridの多くの機能も利用できます。
このチュートリアルでは、Node.jsとTwilio SendGridのSMTPリレーを使ってメールを送信する方法について説明します。
必要条件
- Node.jsのインストール。
- 無料のTwilio SendGridアカウント。こちらでサインアップすると、文字通り無料で1日に最大100件のメールを送信可能です。
- 本稿で説明するプロジェクトを検証するためのメールアドレス。
- Visual Studio Code、またはご希望のIDE。
SendGridの設定
SendGridの使用にあたり、送信側の身元の検証とAPIキーの生成の2つの初期設定作業を行います。
送信側の身元の検証
SendGridご利用のお客様は、送信側の身元として差出人アドレスを検証し、使用するメールアドレスの所有を確認することを求められます。送信側の身元は、ここでは「From」メールアドレスを表します。受信者には、このアドレスがメールの差出人として表示されます。
SendGridにログインし、左側の設定タブに移動します。ドロップダウンをクリックし、[Sender Authentication](差出人認証)をクリックします。
[Sender Identity](送信側の身元)セクションで、[Verify a Single Sender](単一差出人を検証)ボタンをクリックし、表示されるフォームに自分の情報を入力します。
フォームに入力した後、青色の [Create](作成)ボタンをクリックし、メールアドレスを検証するためのメールが受信ボックスに到着するのを待ちます。到着したメールを開き、リンク [Verify Single Sender] (単一差出人を検証する)をクリックすると、SendGridにリダイレクトされ、メールをすぐに使用できることが通知されます。
APIキーの生成
SendGridダッシュボードで、左側の設定タブの [API Keys](APIキー)をクリックし、APIキーセクションに移動します。
右上の青色の [Create API Key] (APIキーの作成)ボタンをクリックすると、フォームが表示されます。
希望するAPIキーの名前を選択し、青色の [Create & View](作成と表示)ボタンをクリックします。
APIキーは、画面を閉じると2度と表示されません。APIキーをコピーし、安全な場所に保存します。
Node.jsアプリケーションの構築
メールアドレスを検証し、SendGridのAPIキーを取得し終えたら、アプリケーションの構築を開始しましょう。
ターミナルまたはコマンドプロンプトで、希望するディレクトリに移動し、プロジェクトを作成するための次のコマンドを実行します。
このコマンドは、プロジェクトファイルを作成してNode.jsプロジェクトをスキャフォールディングするために、プロジェクトのメタデータとパッケージ依存関係を格納するpackage.jsonファイルを作成します。
次に、2つの依存関係(dotenvとNodemailer)をインストールします。dotenvは、環境変数を保存するために使用され、Nodemailer(最も一般的なNode.jsメールパッケージ)は、SMTP経由でメールを送信するために使用されます。これらの依存関係をインストールするには、ターミナルで次のコマンドを入力します。
SendGrid APIキーを保存するには、同じディレクトリに.envという名前のファイルを作成し、以下のステートメントを含めます。XXXXXX
プレースホルダーは実際のAPIキーに置き換えます。
ここで、同じディレクトリにindex.jsというファイルを作成し、次のコードを追加します。
このコードは、nodemailerを初期化し、.envファイルから環境変数をインポートします。次に、指定されたサーバーホスト、ポート番号、認証データに基づいてtransporterを作成します。
SMTPリレー用のSendGridのサーバーホストはsmtp.sendgrid.net
で、推奨ポートは587
です。
認証データとしては、ユーザー名とパスワードを指定する必要があります。SendGrid SMTPサーバーと接続する場合、ユーザー名は「apikey」、パスワードは実際のAPIキーになります。SendGridは、指定されたAPIキーを使用し、SendGridアカウントと接続します。このアカウントにより、送信されたメールを追跡して表示できます。
次のコードをtransporterの下に追加します。
この最後のコードチャンクでは、transporterを使用し、指定されたメッセージ設定の下にメールを送信します。次いで、メールの送信結果をログに記録します。
X-SMTPAPIヘッダー
また、"header"
プロパティのヘッダーをメッセージ設定に渡すこともできます。SendGridのSMTPサービスを使用すると、X-SMTPAPIというヘッダーを介して、必要な数のSMTPオブジェクトを含むJSON文字列をSendGridに渡すこともできます。このヘッダーを介して、SendGridの機能(フィルター、スケジュール送信、置き換えタグなど)をSMTPメールに組み込むことができます。詳細については、SendGridドキュメントの「X-SMTPAPIヘッダーの構築」やSendGridのSMTPAPIヘルパーライブラリー(Node.js版)をご確認ください。
SMTP経由のメール送信
コードを実行する前に、SENDER_EMAIL
(送信者メールアドレス)とRECIPIENT_EMAIL
(受信者メールアドレス)のプレースホルダーを、実際のメールアドレスに各々変更してください。
最後に、ファイルを保存し、ターミナルに戻り、次のコマンドを実行します。
コンソールログで、メールが送信されたことと、SMTPレスポンスコードが250であることを確認してください。このコードは、メールが正常に送信され、受信者に配信されたことを示します。
受信者のメール受信ボックスをチェックし、作成したコードを介してメールが送信されていることを確認します。
次のステップ
Node.jsを使用してSMTP経由で正常にメールを送信できたことと思います。SendGridのSMTPリレーを使用すると、SendGridの機能を損なわずに、既存のSMTPサーバーをSendGridのサーバーに容易に切り替えることができます。
次のステップとして、SendGridのX-SMTPAPIヘッダーを介して専用のIPアドレスプール、配信停止グループ、スケジュール送信等の機能をすべてお試しいただけます。
Dhruv Patel: TwilioのDeveloper Voicesチーム所属の開発者。コーヒーショップで水出しコーヒーを飲みながら仕事している彼を見つけるか、dhrpatel [at] twilio.comまたはLinkedInまでお問い合わせください。