[ses-builder] Amazon SESのリクエストパラメーターを作るだけのライブラリを作った話
システムからSES経由でメールを出すことがちょいちょいあるのですが、毎回大きなオブジェクトを作るのが嫌になってきたので、ビルダー作りました。 これをif分岐とかしながら作るのはさすがにつらい。 使い方 AWS SDKを使 […]
広告ここから
広告ここまで
目次
システムからSES経由でメールを出すことがちょいちょいあるのですが、毎回大きなオブジェクトを作るのが嫌になってきたので、ビルダー作りました。
var params = {
Destination: {
BccAddresses: [
],
CcAddresses: [
"[email protected]"
],
ToAddresses: [
"[email protected]",
"[email protected]"
]
},
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: "[email protected]",
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('[email protected]')
// Set destination
MailDestinationHelper.putToAddresses('[email protected]')
SendMailBuilder.setDestination(MailDestinationHelper.getDestination())
// set message
MailMessageHelper.putBody({
text: 'hello'
})
SendMailBuilder.setMessage(MailMessageHelper.getMessage())
// set reply address
SendMailBuilder.setReplyToAddresses(['[email protected]'])
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('[email protected]')
// set message
MailMessageHelper.putBody({
text: 'hello'
})
// set source
SendMailBuilder.setSource('[email protected]')
.setDestination(MailDestinationHelper.getDestination())
.setMessage(MailMessageHelper.getMessage())
.setReplyToAddresses(['[email protected]'])
const ses = new SES()
ses.sendEmail(SendMailBuilder.getParams()).promise()
状況によって送る相手が複数になったりするケースや、HTMLかTextかとかいろいろ分岐がおきますが、ビルダーにしておけばだいたいなんとかなります。(たぶん)
他のAWSサービスのビルダーとかも作り出したらそのうちまとめるかもです。