投稿

11月, 2020の投稿を表示しています

FirebaseとSendGridでメルマガサービスのバックエンドAPI実装の注意!

イメージ
ホーム ブログ Firebase情報 FirebaseとSendGridでメルマガサービスのバックエンドAPI実装の注意! 2020年11月28日 FirebaseとSendGridでメルマガサービスのバックエンドAPI実装の注意! FirebaseとSendGridでメルマガ(ニュースレター)サービスを作る場合、メッセージの送信には、通常のE-Mailベースのメッセージ送信より、マーケティングキャンペーンを利用する方が便利です。 マーケティングキャンペーンの処理をバックエンドで実装する際には幾つかの注意点があります。 今日は、FirebaseとSendGridでメルマガ(ニュースレター)サービスで利用するバックエンドを express を利用して、実装する場合の注意点について解説しています。 バックエンドのAPIの決め方 WebサービスやWebアプリでバックエンドのインターフェースを決める場合には幾つか注意点があります。 機能的なインターフェース セキュリティ上のインターフェース セキュリティ上のインターフェースは、バックエンドのサービスを利用できる人を制限したりする場合には重要な要素になります。セキュリティ対策にはいろいろありますが、(セッション)クッキーを利用したり、ログイン情報(UIDなど)を添付したり、CORSで利用できるドメインを限定したりして、必要以外の人のアクセスを制限するためのインターフェースです。 今回はセキュリティ上のインターフェースではなく、機能的なインターフェースを中心に解説をします。 機能的なインターフェースは、フロントエンドから必要な機能のバックエンド処理をどのように呼び出すかという仕様です。フロントエンドとバックエンドのやり取りは基本的にはカスタムのインターフェースなので、自由に設計する事ができます。 しかし、今回のSendGridのサービスを利用したバックエンドを実装する場合、SendGridのAPIに合わせた設計をした方が、わかりやす

FirebaseとSendGridを使ったメルマガサービスの実装で使用するキャンペーンメッセージフォーム

イメージ
ホーム ブログ Firebase情報 FirebaseとSendGridを使ったメルマガサービスの実装で使用するキャンペーンメッセージフォーム 2020年11月27日 FirebaseとSendGridを使ったメルマガサービスの実装で使用するキャンペーンメッセージフォーム FirebaseとSendGridを利用してメルマガ(ニュースレター)のサービスを実装する場合に使用するマーケティングキャンペーンの入力フォームの実装例を紹介しています。 メルマガ(ニュースレター)などを沢山の宛先に一括送信する場合、通常のE-MailベースのメッセージよりSendGridのマーケティングキャンペーンを利用した方が便利でいろいろな機能の拡張が可能です。 この記事では、マーケティングキャンペーンの作成フォームの実装例を紹介しています。 マーケティングキャンペーンの作成フォームで必要な事 マーケティングキャンペーンを作成する場合、SendGridのAPIで必須の項目は「タイトル(title)」だけです。 しかし、マーケティングキャンペーンを送信する場合に必須な項目でマーケティングキャンペーンを作成後に更新できない情報があります。これらの情報がないと、送信時や送信日時を予約する場合にエラーになります。 そこで、マーケティングキャンペーンを作成する際に後から更新できない情報も取得しておく必要があります。 その場合に必要な情報が以下の様になります: タイトル(title)必須ですが後から変更可能 件名(subject)後から変更可能 本文(html_content/text_content)後か変更可能 送信者(sender_id)後から変更不可 送付先リスト(list_ids) 送付停止リストなども後から変更不可ですが、今回の実装ではグローバル停止リストを利用する事にして、利用者からの入力なしで一律に設定してしまうことにして、シンプルにしています。 また、送付先リストの他にセグメント(segm

FirebaseとSendGridを使って送信者の削除を行うには?

イメージ
ホーム ブログ Firebase情報 FirebaseとSendGridを使って送信者の削除を行うには? 2020年11月26日 FirebaseとSendGridを使って送信者の削除を行うには? FirebaseとSendGridを利用してメルマガ(ニュースレター)のサービスを実装する場合には、単にメッセージを送信するだけではなく、SendGridといろいろな情報を取得する必要があります。 今日は、メッセージの送信者の削除を中心にお届けします。 前回までに、 SendGridに登録されているメッセージ配信先の取得 と、 送信者の登録 の実装例を紹介してきました。SendGridのサーバーのやり取りのパターンとしては、「データの取得」、「データの追加」をカバーしています。もう一つ「削除」や「指定したデータの取得」の場合は、処理対象のIDをSendGridに送って処理するスタイルのやりとりがあります。 この記事ではこの最後のパターンのIDを使ったやり取りの例を紹介します。 削除する送信者の特定が必要 今回は登録送信者の削除を例にお届けします。登録送信者の削除には削除する送信者を特定する必要があります。 特定の方法はいろいろありますが、一般的な方法として、登録送信者の一覧を表示してその中から選ぶというのがエラー処理もシンプルになるので多くのWebサービスやWebアプリで利用される方法です。 全ての登録送信者を取得する方法は、基本的に以前に紹介した SendGridに登録されているメッセージ配信先の取得 と同じです。 違うのはAPIが異なるだけで実際にコードに書く場合にはほぼ同じコードを使うことができます。 ここでは、取得した登録送信者をテーブルに表示するコードの例を挙げて起きます。 取得した登録送信者は、Reactのステートで管理しています。 render() { return ( <React.Fragment> <S

FirebaseとSendGridを使って送信者の登録を行うには?

イメージ
ホーム ブログ Firebase情報 FirebaseとSendGridを使って送信者の登録を行うには? 2020年11月25日 FirebaseとSendGridを使って送信者の登録を行うには? FirebaseとSendGridを利用してメルマガ(ニュースレター)のサービスを実装する場合には、単にメッセージを送信するだけではなく、SendGridといろいろな情報を取得する必要があります。 今日は、メッセージの送信者の登録を中心にお届けします。 前回、 SendGridに登録されているメッセージ配信先の取得 についてお届けしました。 SendGridのAPIの定義の仕方を見るとわかりますが、SendGridとのやり取りの操作の内容は大きく分けると: データの追加 データの取得(読み出し) データの更新 データの削除 になります。例外もありますが、これをHTTPのメソッドで分類して区別しています。 操作 HTTP method 送信データ 備考 データの追加 POST 登録データ データの取得 GET なし 一括取得 個別取得 データの更新 PATCH 更新データ データの削除 DELETE データのID 前回の例では、SendGridに登録されている送付先の一括取得の詳細をお伝えしました。 基本的なバックエンドの処理は同じ! データの操作方法や対象とするデータによって詳細のコードは変わってきます。 しかし基本的な処理の「 枠組み 」は同じです。 app.post(URL,(req:express.Request, res:express.Response) => { // 登録の処理 }) app.get(URL,(req:express.Request, res:express.Response) => { // データ取得の処理 }) app.patch(URL,(req:express.Request, res:express.Res

FirebaseとSendGridを使って登録送付先を取得する方法

イメージ
ホーム ブログ Firebase情報 FirebaseとSendGridを使って登録送付先を取得する方法 2020年11月24日 FirebaseとSendGridを使って登録送付先を取得する方法 FirebaseとSendGridを利用してメルマガ(ニュースレター)のサービスを実装する場合には、単にメッセージを送信するだけではなく、SendGridからいろいろな情報を取得する必要があります。 SendGridのサーバーとやり取りをするためには、SendGridのAPIキー(秘密鍵/secret key)が必要になります。従って、実装はフロントエンドが直接SendGridのサーバーとやり取りをするのではありません。バックエンド(サーバー)側のサービスを介してSendGridとやり取りをします。 この記事ではまず、SendGridに登録した送付先をバックエンドを介して取得する方法を解説しています。 バックエンドの実装 まず最初にSendGridと直接やり取りをするバックエンドの実装例です。 SendGridに登録した送付先を一括取得する部分のコードです。 バックエンドのサーバーのフレームワークには express を利用しています。 事前に express のパッケージを npm を利用してインストールする必要があります。 express の詳しい実装例は こちらの記事 をご覧ください。 SendGridのサーバーから、登録した送付先を一括取得するAPIは「contactdb/recipients」をHTTPの「GET」のメソッドでSendGridのサーバーに送ります。 HTTPの送信には axios を使っています。バックエンドのファンクション(functions)をフロントエンドと別々にWebホスティングする場合には、CORS(Cross Origin Resource Sharing)の設定も必要です。CORSに設定に関しては こちらの記事 を参照してください。 i

FirebaseとSendGridを使ったメルマガサービスのバックエンドの実装

イメージ
ホーム ブログ Firebase情報 FirebaseとSendGridを使ったメルマガサービスのバックエンドの実装 2020年11月23日 FirebaseとSendGridを使ったメルマガサービスの実装 ~ メッセージの送信方法 FirebaseとSendGridを使ったメルマガ(ニュースレター)サービスを実装する場合に通常のメッセージ(E-Mailアドレスを指定して送信するスタイル)ではなく、送付先を登録したリストを指定して送信するマーケティングキャンペーンで送信する方が都合が良いことがたくさんあります。 大きな違いは送付したメッセージの追跡をする場合です。E-Mailアドレスを指定して送信する場合は、送られたメッセージの宛先(「To」で指定された宛先)に受取人以外のE-Mailアドレスを載せないようにするには、全員に個別のメッセージを送る必要があります。 わかりやすく説明すると、10人の人にメルマガ(ニュースレター)を配信する場合、10人分のE-Mailアドレスを全て「To」で指定して1通のメッセージとして送信することは可能です。しかし、この場合は問題が一つあります。それは、全員のメールアドレスが「To」で指定されているために、メールを受け取った人は10人全てのE-Mailアドレスを見ることができます。これは、メルマガ(ニュースレター)などのサービスを行う際に個人情報保護の観点からは問題になります。 これを避けるためには「Bcc」で指定する方法もあります。そうすれば、1通のメールで済ませることも可能です。 もう一つの方法は個別にE-Mailアドレスを指定して10通のメッセージを送る方法もあります。ただし、この場合は10通のメールを送るためのリクエストをSendGridに送る必要があります。10通に分けて送付した場合はメッセージの追跡も少し複雑になりますし、メッセージの控えも同じメッセージの控えを10通分残す必要もあるので配信数が多くなると保存容量も大きく変わって