開発覚書はてな版

個人的な開発関連の備忘録

【Node.js+Docker】nodemailer+Docker+MailHogのサンプル

概要

  • Docker 上に MailHog を立ち上げて、そこに対してメールを送信するサンプルです。
  • メールは nodemailer を使用して送信します。
  • MailHog起動中は http://localhost:8025/ をブラウザで開くと送信メールの確認が出来ます。

実行環境

  • Node.js - 10.x
  • Docker - 19.x
  • Docker Compose - 1.24.x
    • MailHog - latest

使用ライブラリ

  • nodemailer - 6.3.x

サンプルソース

docker-compose.yml

version: '3'

services:
  mailhog:
    image: mailhog/mailhog:latest
    ports:
      - '8025:8025'
      - '1025:1025'

src/mail.js

const mailer = require('nodemailer');

const smtp = mailer.createTransport({
  host: '127.0.0.1',
  port: '1025',
  auth: {
    user: 'user',
    pass: 'password',
  }
});

const mailOptions = {
  from: 'hoge@github.com',
  to: 'hogehoge@github.com',
  subject: 'タイトルです',
  html: 'メール本文です',
};

smtp.sendMail(mailOptions, function(err, info) {
  if (!err) {
    console.log('Mail success: ' + info.response);
  } else {
    console.log('Mail err', err);
  }
  smtp.close();
});

実行結果

f:id:kakkoya:20191120201705p:plain

f:id:kakkoya:20191120201716p:plain

サンプルソース一式

github.com

参考URL

github.com

おわりに

  • 開発時のメールサーバーとしてMailHogは大変便利です。
  • Dockerを使用することでさらに構築が楽になります。SMTPメール送信系の開発を行っている方はぜひ使用ください。