Productsses-buildertools

[ses-builder] Amazon SESのリクエストパラメーターを作るだけのライブラリを作った話

システムからSES経由でメールを出すことがちょいちょいあるのですが、毎回大きなオブジェクトを作るのが嫌になってきたので、ビルダー作りました。 これをif分岐とかしながら作るのはさすがにつらい。 使い方 AWS SDKを使 […]

広告ここから
広告ここまで

システムからSES経由でメールを出すことがちょいちょいあるのですが、毎回大きなオブジェクトを作るのが嫌になってきたので、ビルダー作りました。

var params = {
  Destination: {
   BccAddresses: [
   ], 
   CcAddresses: [
      "recipient3@example.com"
   ], 
   ToAddresses: [
      "recipient1@example.com", 
      "recipient2@example.com"
   ]
  }, 
  Message: {
   Body: {
    Html: {
     Charset: "UTF-8", 
     Data: "This message body contains HTML formatting. It can, for example, contain links like this one: <a class=\"ulink\" href=\"https://docs.aws.amazon.com/ses/latest/DeveloperGuide\" target=\"_blank\">Amazon SES Developer Guide</a>."
    }, 
    Text: {
     Charset: "UTF-8", 
     Data: "This is the message body in text format."
    }
   }, 
   Subject: {
    Charset: "UTF-8", 
    Data: "Test email"
   }
  }, 
  ReplyToAddresses: [
  ], 
  ReturnPath: "", 
  ReturnPathArn: "", 
  Source: "sender@example.com", 
  SourceArn: ""
 };

これをif分岐とかしながら作るのはさすがにつらい。

使い方

AWS SDKを使うためのライブラリなので、一緒に入れてください。

$ npm i -S ses-builder aws-sdk

TypeScript(というかECMAScript)的な書き方ですが、こんな感じで書けます。

import { SES } from 'aws-sdk'
import {SendMailBuilder, MailDestinationHelper, MailMessageHelper} from 'ses-builder'

// set source
SendMailBuilder.setSource('hoge@example.com')

// Set destination
MailDestinationHelper.putToAddresses('hello@example.com')
SendMailBuilder.setDestination(MailDestinationHelper.getDestination())

// set message
MailMessageHelper.putBody({
    text: 'hello'
})
SendMailBuilder.setMessage(MailMessageHelper.getMessage())

// set reply address
SendMailBuilder.setReplyToAddresses(['hi@example.com'])

const ses = new SES()
ses.sendEmail(SendMailBuilder.getParams()).promise()

メソッドチェーンも対応してます。

import { SES } from 'aws-sdk'
import {SendMailBuilder, MailDestinationHelper, MailMessageHelper} from 'ses-builder'

// Set destination
MailDestinationHelper.putToAddresses('hello@example.com')

// set message
MailMessageHelper.putBody({
    text: 'hello'
})

// set source
SendMailBuilder.setSource('hoge@example.com')
  .setDestination(MailDestinationHelper.getDestination())
  .setMessage(MailMessageHelper.getMessage())
  .setReplyToAddresses(['hi@example.com'])

const ses = new SES()
ses.sendEmail(SendMailBuilder.getParams()).promise()

状況によって送る相手が複数になったりするケースや、HTMLかTextかとかいろいろ分岐がおきますが、ビルダーにしておけばだいたいなんとかなります。(たぶん)

他のAWSサービスのビルダーとかも作り出したらそのうちまとめるかもです。

ses-builder on GitHub

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts