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}`)
})
上記は、Express を使用して単純なサーバーを起動するために必要なものです。以下を実行すると、正しく動作していることがわかります:
node index.js
Nodemailer のインストール方法
次のコマンドを使用して nodemailer をインストールします:
npm install nodemailer
Nodemailer の API は非常にシンプルで、次のことを行う必要があります:
<オール>トランスポーター オブジェクトを作成するには、次の手順を実行します。
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 を使用する際の複雑さについて詳しく知りたい場合は、ここをクリックしてください。
次のステップでは、コーディングの代わりにいくつかの構成が必要になるため、準備を整えておいてください。
Google クラウド プラットフォームの構成
Google Cloud Platform アカウントをお持ちでない場合は、前提条件として必ずアカウントを設定してください。設定したら、左上隅のドロップダウン メニューをクリックして、新しいプロジェクトを作成します。
[新しいプロジェクト] オプションを選択します:
次のウィンドウで、プロジェクトに名前を付ける必要があります。好きなものを選んでください。 NodemailerProject は省略します。 名前。場所のプロパティについては、組織なしのままにしておくことができます。
プロジェクトのセットアップには数秒かかる場合がありますが、その後、次の画面が表示されます:
左上隅にある 3 本の破線をクリックしてナビゲーション メニューを開き、[API とサービス:] を選択します。
Nodemailer と Gmail を使用できるようにするには、OAuth2 を使用する必要があります。 OAuth に慣れていない場合、これは認証用のプロトコルです。必要ないのでここでは詳しく説明しませんが、詳しく知りたい場合はこちらをご覧ください。
まず、OAuth 同意画面を構成する必要があります:
G-Suite メンバーでない場合、使用可能な唯一のオプションはユーザー タイプの外部です。
[作成] をクリックすると、次の画面でアプリケーションの情報 (サーバー) を入力する必要があります。
[ユーザー サポートの電子メール] フィールドと [開発者の連絡先情報] フィールドに電子メールを入力します。 [保存して続行] をクリックすると、この構成のスコープ フェーズに移動します。このフェーズは私たちには関係ないのでスキップして、ユーザーのテスト フェーズに進んでください。
ここで、自分自身をユーザーとして追加し、[保存して続行] をクリックします。
OAuth 設定の構成方法
このフェーズでは、Nodemailer で使用する OAuth 資格情報を作成します。 OAuth 同意画面の上にある [資格情報] タブに移動します。テキスト Create Credentials のあるプラス (➕) 記号をクリックします。 OAuth クライアント ID を選択します。
[アプリケーション タイプ] ドロップダウン メニューで、[ウェブ アプリケーション] を選択します :
承認済みリダイレクト URI 内 セクションでは、この記事の冒頭で説明したキーの 1 つを取得するために使用するため、OAuth2 Playground (https://developers.google.com/oauthplayground) を必ず追加してください。
[作成] をクリックすると、クライアント ID とクライアント シークレットが表示されます。 これらは秘密にしておき、いかなる方法、形、形でも絶対に公開しないでください .
OAuth 更新トークンを取得
Nodemailer のトランスポーター オブジェクト内で使用する更新トークンを取得するには、OAuth2 Playground に移動する必要があります。この特定の目的のために、この URI を早い段階で承認しました。
1. 右側の歯車アイコン (OAuth2 構成) をクリックし、チェックボックスをオンにして、独自の OAuth2 資格情報を使用します。
2. Web サイトの左側に目を向けると、サービスのリストが表示されます。 Gmail API v1 が表示されるまで下にスクロールします。
3. [API を承認] をクリックします
Gmail アカウントにログインするための画面が表示されます。テスト ユーザーとしてリストしたユーザーを選択してください。
4. 次の画面で、Google がまだこのアプリケーションを確認していないことがわかりますが、確認のために送信していないので問題ありません。 [続行] をクリックします。
5. 次の画面で、プロジェクトに Gmail アカウントとやり取りする許可を与えるよう求められます。そうしてください。
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: [email protected],
to: [email protected],
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 を使用するプロジェクトから着想を得ました。確認したい場合は、ここにアクセスしてください。
-
Mac から暗号化された電子メールを送信する方法
通常、メールの交換は安全な問題であり、プロバイダーは送受信するメールのセキュリティに注意を払っています。ただし、電子メールの暗号化は、使用しているすべての電子メール サービスで利用できるとは限りません。メールの安全性をさらに高めたい場合は、メール アプリで使用することをお勧めします。 Mac を使用している限り、マシンのストック メール アプリから暗号化されたメールを送信できます。 組み込みのメール アプリを使用すると、メールを送信する前に暗号化できます。この暗号化プロセスでは、実際には Mac に電子メール証明書をインストールする必要があります。この証明書は、利用可能なオンライン プロ
-
コンピュータからテキスト メッセージを送信する方法
Google と Apple のライバル関係は誰の目にも明らかです。彼らはほとんどの場合、新しい製品やサービスのリリースをめぐって互いに競争しています。最近のリリースで、Google は新しい機能である Messages for web を追加することで、メッセージング アプリ Android Messages をより強力にしました。この機能を使用すると、コンピューターから Web 経由でスマートフォンにテキスト メッセージを直接送信できるようになりました。この機能は、Apple がかなり前に同じ (iMessage) を導入したため、Android ユーザーにとって最も待ち望まれている機能の