Nodemailerを使ってgmailを送ってみる
タイトルにもあるように今回は、Nodemailerを使って手軽にgmailを送ってみます。railsには標準でActionMailerがあるのですが、nodeにも何か良いライブラリはないのかなーと調べたところありました。
Nodemailerについて
環境
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について
インストールします。
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
を読み込みます。
secure
をtrue
に設定した場合、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メソッドの第一引数に上で定義したメッセージの変数を、第二引数にはコールバック関数が入ります。
ターミナル上でログを確認するためにerror
とdata
を記述しました。
実際にメールを送信してみる
node ファイル名.js
gmialにメールが飛んできます!
まとめ
あっという間にメールを送信することができました! expressを使って入力画面、確認画面、サンクス画面を作ってメールを送信することも今後してみたいと思います。