MJMLはHTMLメールを作成するためのテンプレート言語のようなものです。
メール送信する際にMJML形式で書かれたメールは最終的にHTMLに変換される必要がありますが、その変換部分をAWS Lambdaで実装します。
前提
- AWS CDK
- Lambda(Node.js)
インストールするライブラリ
- mjml
- @types/mjml
Lambda関数の作成
new lambda_nodejs.NodejsFunction(this, 'SendEmailFunction', {
functionName: 'SendEmailFunction',
runtime: lambda.Runtime.NODEJS_22_X,
entry: './send-email/index.ts',
handler: 'handler',
bundling: {
nodeModules: ['uglify-js'],
},
})
ポイントは、bundlingに'uglify-js'を含めることです。
そうしないと実行時にError: Cannot find module '../lib/utils.js'
というエラーがでることになります。
詳細はIssueを参照してください。
https://github.com/mjmlio/mjml/issues/2132
MJMLのバージョン4.15.3でも解消されていませんでした。
実装
import mjml2html from 'mjml'
というふうにインポートした関数を使ってMJML(文字列)をHTML(文字列)に変換することができます。
最後に
HTMLメールをお手軽に作成するツールは他にもあるのでしょうか?
古いOutlookへの対応などHTMLメールは歴史の分だけ奥が深いので、MJMLのようにそこを解消してくれるツールは非常に便利でした。