あなたのウェブサイトからあなたのユーザーにメールを送ってください.それは簡単に得ることができない!



まず第一に、私はあなたに私が話していることの上で頭を与えさせます、そして、このブログの目的.今日の世界では、ほぼすべてのウェブサイトやWebアプリは、それぞれのユーザーには、それぞれの機能や目的を持つすべての種類のメールを送信します.

これらのメールの中には、

  • ユーザー、別名ユーザ認証
  • を確認します
  • リセット認証パスワード
  • のマーケティングメール
  • ニュースレターに加入する

  • 報告書(チケット)
  • に応えている

  • 接触Meフォーム
  • に応答している
  • トランザクションメール
  • あなたが言うことができるように、それは我々のプラットフォームから右側のユーザーにメールを送信するためにほとんど義務的な多くのユースケースがあります.しかし、どのように我々はそんなに面倒をせずに、そうする簡単な方法を実装できますか?

    電子メール配送サービスによるNodemailerの使用


    Nodemailerは、それら自身の定義によって、ノードのためのモジュールです.JSのアプリケーションを簡単にケーキのメール送信を許可する.ほとんどのユーザーがデフォルトで有効にするソリューションです.
    このクイックプロジェクトから始めるには、ノードを持たなければなりません.JSのアプリケーションを事前に設定して実行している.あなたがノードと非常によく知らないならば.JSと簡単なバックエンド環境を設定する少し助けを必要とする、私を助けるために私の今後のブログをチェックアウト.
    次に、ルートディレクトリにnodemailerをインストールします.
    npm i nodemailer
    
    
    今すぐあなたのクライアント/訪問者にこれらの簡単なメールを送信する簡単な方法を提供する電子メール配信サービスを使用する必要があります.これらのサービスの多くは、それぞれが独自の機能と長所を他のそれを持っている.最も一般的なものはsendgrid、sendinblue、hubspot、omnisendなどです.私が使用する1つは、サービスの容易さのため、sendibblueになると、任意の予期しない問題の場合、彼らのかなり良い顧客サポート.アカウントの作成手順
  • は、彼らの公式websiteを訪問します
  • は、右上隅
  • の上のサインアップボタンをクリックします
  • はSMTPとAPIタブに行きます、here
  • このタブをあとで開いておくと、APIキーやSMTPサーバーを使用して、セットアップ後に
  • になります

    上記の手順をノードに実装します。jsアプリ


    今、魔法が起こるのを見るために、我々のノードを変更する必要があります.jsアプリ.まず、ルートディレクトリの中にファイルを作り、好きなものを何でもいいです.js次に、以下のようにNodeMailerをインポートします(必要に応じてimportメソッドを使用し、package . jsonファイルに移動し、オプションを追加します.
    import nodemailer from 'nodemailer'
    
    
    次に、以下の関数を作成してエクスポートします.
  • NodeDailerのcreateTransport ()メソッドを使用してトランスポートを作成します.一方、sendinblueから取得したサーバ情報を引数
  • として渡します.
  • MailOptionsオブジェクトを作成します.そして、それは送付者メール、レシーバーメール、電子メールの主題、電子メール自体
  • のような我々の電子メールオプションを含みます
  • 上記のオプションを引数として渡している間に、Sendmail ()メソッドをトランスポートに呼び出します
  • import nodemailer from "nodemailer"
    
    //Note that I stored my credentials in my .env file
    const { SMTP_KEY, SMTP_PASS, SENDER_EMAIL, REPORT_PASS } = process.env
    
    export const sendReportMail = (to, mailContent) => {
        const smtpTransport = nodemailer.createTransport({
            host: "smtp-relay.sendinblue.com",
            service: "Sendinblue",
            port: 587,
            auth: {
                user: SMTP_KEY,
                pass: SMTP_PASS,
            },
        })
    
        const mailOptions = {
            from: SENDER_EMAIL,
            to: [to, SENDER_EMAIL],
            subject: "Email subject",
            html: `
                <div >
                        Dear ${mailContent?.name},
                        Thanks for contacting us! We'll make sure to get back in touch as soon as possible!
                </div>
            `,
        }
    
        smtpTransport.sendMail(mailOptions, (err, info) => {
            if (err) return err
            return info
        })
    }
    
    
    最後になりますが、少なくとも以下の例として、任意のルータコントローラ内でこの関数を使用して簡単にユーザーのメールを送信できます.
    export const sendReport = async (req, res) => {
    // Getting report data, which the user himself added, while we received this data with a POST request
        const { firstName, lastName, subject, message } = req.body
    
        try {
    
                const mailContent = {
                    name: `${firstName} ${lastName}`,
                    subject,
                    message,
                }
    
                sendReportMail(user?.email, mailContent)
    
                res.status(200).json({
                    message:
                        "Report submitted successfully! Please check your email for confirmation.",
                })
            }
        } catch (err) {
            if (err?.errors?.email?.name === "ValidatorError") {
                res.status(403).json({
                    message: "Please enter a valid email",
                })
            } else {
                res.status(500).json({
                    message: "Server Error",
                })
            }
        }
    }