Nodemailer:超过8封邮件中的4封以空体发送

时间:2019-02-01 17:47:44

标签: node.js email web-applications smtp nodemailer

我正在为课程管理构建一个管理Web应用程序。我有一个mongodb及其所有校友,他们的电子邮件和他们的注册ID。我想将ID发送给他们的邮件。我有一个html模板,然后使用fs.readfile和.replace()函数将占位符替换为我想发送的真实信息。

    var dateForCalculation = new Date();
    var prevSunday = new Date(dateForCalculation.setDate(dateForCalculation.getDate()-dateForCalculation.getDay())).toISOString();
    var nextSunday = new Date(dateForCalculation.setDate(dateForCalculation.getDate()+7)).toISOString();

    console.log(prevSunday);
    console.log(nextSunday);

问题是我发送了8次相同的邮件。我正确接收了4次,我没有身体收到了4次。

1 个答案:

答案 0 :(得分:0)

调用fs.readFile下方的代码未作为该函数的回调的一部分提供。基本上,该文件读出的被踢掉和代码的其余部分开始执行时,导致在比赛创建html_template之前被发送的电子邮件。

两种解决方案:

  1. 扩展回调以包含其余代码。这将是首选方法,因为它是非阻塞的,因此允许您的应用程序继续处理其他请求。
  2. 使用fs.readFileSync(同步等效项)。

此外,由于您正在使用异步/等待,因此您也可以let data = await fs.readFile("path/to/file");