MailHogはメールのテストをするときに便利ですが、APIのレスポンスがMIMEエンコードされており読めないのが玉に瑕です。
色々試行錯誤したのですが、Nodemailerのモジュール、Mailparserを使うのが手っ取り早そうだったので紹介します。
環境
- Ubuntu 18.04
- NodeJS 10.14.2
手順
NodeJSでMailhogを扱うためのmailhog-nodeと、メールをデコードするためのMailparserをインストールします。
$ npm install --save-dev mailhog mailparser
次に、Mailhogからメールを取得し、レスポンス中の Raw.Data
をMailparserでパースします。
const mailhog = require('mailhog')({apiUrl: 'http://localhost:8025'})
const { simpleParser } = require("mailparser");
const mailTo = 'foo@example.com'
const mails = await mailhog.search(mailTo, 'to')
const parsedMails = []
let parsed = ''
for (let mail of mails) {
parsed = await simpleParser(item.Raw.Data)
parsedMails.push(parsed)
}
パース結果は https://nodemailer.com/extras/mailparser/#mail-object などを参考にしてください。