Promise.allを使用して複数のメールを送信する方法


  1. ライブラリのインストール: まず、Node.jsのプロジェクトでメール送信を行うために、適切なメール送信ライブラリをインストールします。一般的な選択肢としては、NodemailerやSendGridなどがあります。選んだライブラリのドキュメントに従って、必要な手順を実行してください。

  2. Promise.allを使用したメールの送信: 以下の例では、Nodemailerライブラリを使用してメールを送信する方法を示します。

const nodemailer = require('nodemailer');
// メール送信関数
function sendEmail(recipient, subject, message) {
  return new Promise((resolve, reject) => {
    // Nodemailerの設定
    const transporter = nodemailer.createTransport({
      // 送信元のSMTPサーバーの設定
      service: 'Gmail',
      auth: {
        user: '[email protected]',
        pass: 'your-password'
      }
    });
    // 送信するメールの内容
    const mailOptions = {
      from: '[email protected]',
      to: recipient,
      subject: subject,
      text: message
    };
    // メールの送信
    transporter.sendMail(mailOptions, (error, info) => {
      if (error) {
        reject(error);
      } else {
        resolve(info);
      }
    });
  });
}
// メール送信の例
const recipients = ['[email protected]', '[email protected]', '[email protected]'];
const subject = '重要なお知らせ';
const message = 'こんにちは、これは重要なお知らせです。';
// Promise.allを使用して、すべてのメールの送信を非同期に実行
Promise.all(recipients.map(recipient => sendEmail(recipient, subject, message)))
  .then(results => {
    console.log('メールが正常に送信されました。', results);
  })
  .catch(error => {
    console.error('メールの送信中にエラーが発生しました。', error);
  });

上記のコードでは、sendEmail関数に受信者のメールアドレス、件名、メッセージを渡してメールを送信します。Promise.allメソッドを使用して、複数のsendEmail関数を非同期に呼び出し、すべてのメールの送信が完了するのを待ちます。成功した場合は、結果が配列として返されます。

このようにPromise.allを使用することで、複数の非同期タスクを同時に実行し、結果をまとめて処理することができます。メール送信の例では、複数の受信者に対して一斉にメールを送信するためにPromise.allを使用しています。