Gmailから自動で電子メールを送信したい場面は意外と多いものの、Gmailのセキュリティは日に日に強化されており、気軽にメールを送信できないようになっています。そこで、今回は、Node.jsを使ってGmailを自動送信する方法をまとめてみます。

まだまだ現役のメール送信を自動化しよう

友人同士の連絡には、SNSやLINEなどが使われることが増えましたが、ビジネス用途ではまだまだ電子メールが積極的に利用されています。それで、チームメンバーや顧客に電子メールを一括送信したい場面というのは、意外と多いものです。

今回は、JavaScript実行エンジンのNode.jsをPCにインストールしてメールの自動送信システムを作ってみましょう。なお、Node.jsのインストールについては、本連載の第2回で紹介しています。まだインストールしていない人は、手順を参照してください。

Gmail側でアプリパスワードを取得しよう

なお、Gmailを使ってメール送信する際に大切なことですが、Gmail側で設定が必要になります。まず、Googleアカウントのセキュリティ設定画面にアクセスします。そして、「Googleへのログイン」にて「2段階認証プロセス」をオンに設定します。

  • Googleアカウントで2段階認証プロセスをオンに設定

    Googleアカウントで2段階認証プロセスをオンに設定

続いて、アプリパスワードをクリックします。そして、改めてGoogleアカウントでログインします。それから、アプリパスワードの生成画面で、「メール」「Mac(またはWindows)」を選択して「生成」ボタンをクリックします。

  • アプリパスワードを生成します

    アプリパスワードを生成します

すると、パスワードが生成されるので、このアプリパスワードをメモっておきましょう。なお、このアプリパスワードは手軽に作成と削除が可能です。メールの自動送信が必要なくなったら速やかにこのアプリパスワードを削除しましょう。

  • 生成したアプリパスワードをメモっておきましょう

    生成したアプリパスワードをメモっておきましょう

プログラムを作ろう

今回は、Nodemailerというパッケージを利用してメールを送信してみます。ターミナル(WindowsではPowerShell)を起動して、以下のコマンドを実行しましょう。

npm init -f
npm install nodemailer

すると、node_modulesというディレクトリが作成されて、Nodemailerがインストールされます。そこで、同じディレクトリに以下のプログラムを作成します。そして「testmail.js」という名前で保存しましょう。なお、★マークの部分は自身の設定に書き換える必要があります。

// Nodemailerを使う --- (*1)
const nodemailer = require('nodemailer')

// 認証情報などを設定してNodemailerオブジェクトを生成 --- (*2)
const porter = nodemailer.createTransport({
  service: 'gmail',
  port: 465,
  secure: true,
  auth: {
    user: '★★★@gmail.com', // Gmailアカウント --- (*3)
    pass: '★★★' // アプリパスワード --- (*4)
  }
})

// メールを送信する --- (*5)
porter.sendMail({
  from: '★★★@gmail.com', // Gmailアカウント --- (*6)
  to: '★★★@example.com', // 送信先のアドレス --- (*7)
  subject: 'テスト', // 件名
  text: '送信テストです。' // メール本文
}, function (err, info) {
  if (err) { // エラーの場合 --- (*8)
    console.error(err)
    return
  }
  // 正しく送信できた場合 --- (*9)
  console.log('ok', info)
})

プログラムを実行するには、ターミナルで以下のコマンドを実行します。

node testmail.js

プログラムを実行して、正しくメールを送信すると、ターミナルに送信完了と送信情報が表示されます。そして、メールの送信先を開いてメールを受信したことを確認してください。

  • プログラムを実行したところ

    プログラムを実行したところ

プログラムを確認してみましょう。(*1)ではNodemailerパッケージを使うように、requireでモジュールの取り込みを記述します。(*2)ではGmailの認証情報を指定して、Nodemailerのオブジェクトを生成します。読者の皆さんの書き換えが必要なのは、Gmailアカウントを指定する(*3)と先ほど取得したアプリパスワードを指定する(*4)の部分です。

(*5)の部分で実際にメールを送信します。(*6)には送信元のGmailアドレスを指定します。(*2)で指定したのと同じアドレスを指定します。(*7)には送信先のメールアドレスを指定します。それから、subjectには件名、textにはメールの本文を指定します。

なお、Nodemailerでは、メールの送信が完了した時にコールバック関数が実行されます。(*8)の部分にはメールの送信に失敗した時の処理を記述します。(*9)の部分には正しく送信できた時の処理を記述します。

添付ファイルをメールに付けたい場合

次に添付ファイルを付けたメールを送信したい場合のプログラムを確認してみましょう。以下のプログラムを「testattach.js」という名前で保存します。また、同じフォルダに「test.pdf」というPDFファイルを用意しておきましょう。

一つ前のプログラム「testmail.js」とほとんど同じです。そこで、違う部分だけに数字を振っています。

この記事は
Members+会員限定記事です。

ログイン/会員登録する