郵便
 Computer >> コンピューター >  >> ソフトウェア >> 郵便

Nodemailer を使用して Node.js サーバーからメールを送信する方法

Nodemailer は、サーバーから簡単にメールを送信できるようにする Node.js モジュールです。ユーザーと通信したい場合でも、何か問題が発生したときに自分自身に通知したい場合でも、そのためのオプションの 1 つはメールです。

Nodemailer をベアボーン形式で使用する方法を説明する記事は数多くありますが、この記事はその 1 つではありません。ここでは、Nodemailer と Gmail を使用して Node.js バックエンドからメールを送信する最も一般的な方法を示します。

Nodemailer の使用方法

まず、Express を使用して Node.js ボイラープレートをセットアップする必要があります。 Node と npm がインストールされていることを確認するには、次のコマンドを実行します:

node -v 
npm -v

これらのコマンドの両方でバージョンが表示されれば、問題ありません。それ以外の場合は、不足しているものをインストールしてください。

プロジェクトのディレクトリを作成します。 nodemailerProject を使用します .

mkdir nodemailerProject

新しく作成されたディレクトリに移動して実行します

npm init

これにより、プロジェクトが package.json で初期化されます ファイル。

次に、以下を使用して Express をインストールする必要があります。

npm install express

エントリ ポイントとして指定したファイル (デフォルトは index.js) に応じて、それを開いて次のコードを貼り付けます。

const express = require('express')
const app = express()
const port = 3000


app.listen(port, () => {
  console.log(`nodemailerProject is listening at https://localhost:${port}`)
})
index.js

上記は、Express を使用して単純なサーバーを起動するために必要なものです。以下を実行すると、正しく動作していることがわかります:

node index.js

Nodemailer のインストール方法

次のコマンドを使用して nodemailer をインストールします:

npm install nodemailer

Nodemailer の API は非常にシンプルで、次のことを行う必要があります:

<オール>
  • トランスポーター を作成する オブジェクト
  • MailOptions を作成する オブジェクト
  • Transporter.sendMail を使用する メソッド
  • トランスポーター オブジェクトを作成するには、次の手順を実行します。

    let transporter = nodemailer.createTransport({
          service: 'gmail',
          auth: {
            type: 'OAuth2',
            user: process.env.MAIL_USERNAME,
            pass: process.env.MAIL_PASSWORD,
            clientId: process.env.OAUTH_CLIENTID,
            clientSecret: process.env.OAUTH_CLIENT_SECRET,
            refreshToken: process.env.OAUTH_REFRESH_TOKEN
          }
        });
    ✋ ユーザーとパス キー (Gmail アカウントの独自の資格情報) を除いて、OAuth の設定後に他の 3 つのキーを取得する必要があることに注意してください。

    この記事の冒頭で述べたように、メール送信のニーズに Gmail を使用します。ご想像のとおり、Gmail は、ユーザーのアカウントから/へ送信されるメールに関しては、高レベルのセキュリティを備えています。

    この障害を克服する方法はいくつかあります (他より優れているものもあります)。Google Cloud Platform でプロジェクトをセットアップする必要がある方法を選択します。 . Gmail で有効化された OAuth セキュリティの資格情報を取得するには、これを行う必要があります。

    nodemailer で Gmail を使用する際の複雑さについて詳しく知りたい場合は、ここをクリックしてください。

    次のステップでは、コーディングの代わりにいくつかの構成が必要になるため、準備を整えておいてください。

    Nodemailer を使用して Node.js サーバーからメールを送信する方法
    Daniel McCullough による写真 / Unsplash

    Google クラウド プラットフォームの構成

    Google Cloud Platform アカウントをお持ちでない場合は、前提条件として必ずアカウントを設定してください。設定したら、左上隅のドロップダウン メニューをクリックして、新しいプロジェクトを作成します。

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    [新しいプロジェクト] オプションを選択します:

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    次のウィンドウで、プロジェクトに名前を付ける必要があります。好きなものを選んでください。 NodemailerProject は省略します。 名前。場所のプロパティについては、組織なしのままにしておくことができます。

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    プロジェクトのセットアップには数秒かかる場合がありますが、その後、次の画面が表示されます:

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    左上隅にある 3 本の破線をクリックしてナビゲーション メニューを開き、[API とサービス:] を選択します。

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    Nodemailer と Gmail を使用できるようにするには、OAuth2 を使用する必要があります。 OAuth に慣れていない場合、これは認証用のプロトコルです。必要ないのでここでは詳しく説明しませんが、詳しく知りたい場合はこちらをご覧ください。

    まず、OAuth 同意画面を構成する必要があります:

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    G-Suite メンバーでない場合、使用可能な唯一のオプションはユーザー タイプの外部です。

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    [作成] をクリックすると、次の画面でアプリケーションの情報 (サーバー) を入力する必要があります。

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    [ユーザー サポートの電子メール] フィールドと [開発者の連絡先情報] フィールドに電子メールを入力します。 [保存して続行] をクリックすると、この構成のスコープ フェーズに移動します。このフェーズは私たちには関係ないのでスキップして、ユーザーのテスト フェーズに進んでください。

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    ここで、自分自身をユーザーとして追加し、[保存して続行] をクリックします。

    OAuth 設定の構成方法

    このフェーズでは、Nodemailer で使用する OAuth 資格情報を作成します。 OAuth 同意画面の上にある [資格情報] タブに移動します。テキスト Create Credentials のあるプラス (➕) 記号をクリックします。 OAuth クライアント ID を選択します。

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    [アプリケーション タイプ] ドロップダウン メニューで、[ウェブ アプリケーション] を選択します :

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    承認済みリダイレクト URI 内 セクションでは、この記事の冒頭で説明したキーの 1 つを取得するために使用するため、OAuth2 Playground (https://developers.google.com/oauthplayground) を必ず追加してください。

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    [作成] をクリックすると、クライアント ID とクライアント シークレットが表示されます。 これらは秘密にしておき、いかなる方法、形、形でも絶対に公開しないでください .

    Nodemailer を使用して Node.js サーバーからメールを送信する方法
    Power Lai / Unsplash による写真

    OAuth 更新トークンを取得

    Nodemailer のトランスポーター オブジェクト内で使用する更新トークンを取得するには、OAuth2 Playground に移動する必要があります。この特定の目的のために、この URI を早い段階で承認しました。

    1. 右側の歯車アイコン (OAuth2 構成) をクリックし、チェックボックスをオンにして、独自の OAuth2 資格情報を使用します。

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    2. Web サイトの左側に目を向けると、サービスのリストが表示されます。 Gmail API v1 が表示されるまで下にスクロールします。

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    3. [API を承認] をクリックします

    Gmail アカウントにログインするための画面が表示されます。テスト ユーザーとしてリストしたユーザーを選択してください。

    4. 次の画面で、Google がまだこのアプリケーションを確認していないことがわかりますが、確認のために送信していないので問題ありません。 [続行] をクリックします。

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    5. 次の画面で、プロジェクトに Gmail アカウントとやり取りする許可を与えるよう求められます。そうしてください。

    Nodemailer を使用して Node.js サーバーからメールを送信する方法

    6. 完了すると、OAuth Playground にリダイレクトされ、左側のメニューに認証コードが表示されます。 [トークンの Exchange 認証コード] というラベルの付いた青いボタンをクリックします .

    リフレッシュ トークンとアクセス トークンのフィールドが入力されます。

    サーバーに戻る

    これらの構成をすべて行った後、アプリケーションに戻り、すべてのデータをトランスポーターの作成に入力できます。すべての資格情報を非公開にするために、dotenv パッケージを使用できます。作成する .env ファイルも .gitignore に追加することを忘れないでください。

    これで、次のようになりました:

    let transporter = nodemailer.createTransport({
          service: 'gmail',
          auth: {
            type: 'OAuth2',
            user: process.env.MAIL_USERNAME,
            pass: process.env.MAIL_PASSWORD,
            clientId: process.env.OAUTH_CLIENTID,
            clientSecret: process.env.OAUTH_CLIENT_SECRET,
            refreshToken: process.env.OAUTH_REFRESH_TOKEN
          }
        });

    次に、mailOptions オブジェクトを作成します。このオブジェクトには、メールの送信先とそのデータの詳細が保持されます。

    let mailOptions = {
          from: tomerpacific@gmail.com,
          to: tomerpacific@gmail.com,
          subject: 'Nodemailer Project',
          text: 'Hi from your nodemailer project'
        };

    このオブジェクトには、さらに多くのフィールドや複数の受信者を含めることができますが、ここでは説明しません。

    最後に、sendMail メソッドを使用します:

    transporter.sendMail(mailOptions, function(err, data) {
          if (err) {
            console.log("Error " + err);
          } else {
            console.log("Email sent successfully");
          }
        });

    アプリケーションを実行すると、受信トレイに新しいメールが表示されます。

    この記事は、私が作成した Nodemailer を使用するプロジェクトから着想を得ました。確認したい場合は、ここにアクセスしてください。


    1. Mac から暗号化された電子メールを送信する方法

      通常、メールの交換は安全な問題であり、プロバイダーは送受信するメールのセキュリティに注意を払っています。ただし、電子メールの暗号化は、使用しているすべての電子メール サービスで利用できるとは限りません。メールの安全性をさらに高めたい場合は、メール アプリで使用することをお勧めします。 Mac を使用している限り、マシンのストック メール アプリから暗号化されたメールを送信できます。 組み込みのメール アプリを使用すると、メールを送信する前に暗号化できます。この暗号化プロセスでは、実際には Mac に電子メール証明書をインストールする必要があります。この証明書は、利用可能なオンライン プロ

    2. コンピュータからテキスト メッセージを送信する方法

      Google と Apple のライバル関係は誰の目にも明らかです。彼らはほとんどの場合、新しい製品やサービスのリリースをめぐって互いに競争しています。最近のリリースで、Google は新しい機能である Messages for web を追加することで、メッセージング アプリ Android Messages をより強力にしました。この機能を使用すると、コンピューターから Web 経由でスマートフォンにテキスト メッセージを直接送信できるようになりました。この機能は、Apple がかなり前に同じ (iMessage) を導入したため、Android ユーザーにとって最も待ち望まれている機能の