nodejs
MailHog

MailhogAPIのレスポンスをデコードする

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 などを参考にしてください。