Nodemailerを使ってgmailを送ってみる

タイトルにもあるように今回は、Nodemailerを使って手軽にgmailを送ってみます。railsには標準でActionMailerがあるのですが、nodeにも何か良いライブラリはないのかなーと調べたところありました。

Nodemailerについて

nodemailer.com

環境

node v8.11.1

はじめに

作業ディレクトリを作成します。

mkdir nodemailer_sample

パッケージをインストール

yarn add -D nodemailer

ファイルを作成

ルートディレクトリ直下にcontact.jsを作成してください。(ファイル名はなんでもいいです。)

const nodemailer = require('nodemailer');

まずは、nodemailerを読み込みます。

その後、smtpの設定を行います。 今回はgmailを使用します。

const smtpConfig = nodemailer.createTransport({
  service: 'gmail', //サービス名
  port: 46, // ポート番号
  secure: true, // 認証するかしないか
  auth: {
      user: 'メールアドレス',
      pass: 'パスワード'
  }
});

ここでメールアドレスやパスワードを直に書くのはよくないので環境変数を使います。nodeには環境変数を手軽に使うことができるライブラリがあるのでインストールしましょう。

dotenvのインストール

dotenvについて

github.com

インストールします。

yarn add -D dotenv

ルートディレクトリ直下に.envファイルを作成します。 中身はこちら。

EMAIL_ADDRESS = "ご自身のメールアドレス"
EMAIL_PASSWORD = "パスワード"

再度jsファイルを以下のように変更します。

const nodemailer = require('nodemailer');
require('dotenv').config(); // 追加

const smtpConfig = nodemailer.createTransport({
  service: 'gmail',
  port: 46,
  secure: true,
  auth: {
      user: process.env.EMAIL_ADDRESS, // 追加
      pass: process.env.EMAIL_PASSWORD // 追加
  }
});

require('dotenv').config().envを読み込みます。 securetrue に設定した場合、authにuser、passそれぞれに値が入っていないとエラーになるので設定してくださいね。

メッセージの設定

const message = {
  from: process.env.EMAIL_ADDRESS,
  to: process.env.EMAIL_ADDRESS,
  subject: 'テストです',
  text: 'サンプルメール送ってみたよ',
}

今回は簡単なデモのため送信側も受信側も同じアドレスを使用しています。

メールの送信設定

smtpConfig.sendMail(message, (error, data) => {
  if(error) console.log(error)
  console.log(data);
});

sendMailメソッドの第一引数に上で定義したメッセージの変数を、第二引数にはコールバック関数が入ります。 ターミナル上でログを確認するためにerrordataを記述しました。

実際にメールを送信してみる

node ファイル名.js

gmialにメールが飛んできます!

まとめ

あっという間にメールを送信することができました! expressを使って入力画面、確認画面、サンクス画面を作ってメールを送信することも今後してみたいと思います。