向节点js中的多个订阅的客户端发送电子邮件

我在本地系统上有一个Node js网站,在该网站上会向用户通知有关流行趋势的文章或通过电子邮件发布。我的代码就像:-

app.get('/:articlename',(req,res)=>{
conn.query(`SELECT views,isAlreadySent FROM article_table WHERE article_name='${req.params.articlename}'`,(err,results,fields)=>{
// if views greater then 5000 views and isAlreadySent is false then send email to subscribed user from database
    })
});

以上代码很长,我正在向你们展示较短的版本。一切正常。我的代码是,当任何用户查看任何文章时,它都会触发电子邮件发送方法,并且如果该文章的查看次数超过5000,则将其电子邮件发送给所有订阅的用户,但是订阅的用户可以是数千,因此我如何向所有订阅的用户发送电子邮件用户而不会落后于当前观看者

我想让用户像pinterest一样得到通知,媒介通过邮件通知数百万用户

我的意思是,当任何用户请求文章页面时,一个代码块将检查视图,如果视图更大,则将向多个用户发送电子邮件。用户数量可能很大,如果我在用户请求文章时发送了电子邮件,那么对该用户的延迟可能会非常罕见。我希望如果视图更大,那么它应该将任何布尔值发布到另一个程序,并且该程序应在不打扰用户的情况下通过电子邮件发送给幕后所有人,或者可以通过其他任何技巧来完成

lixu0394 回答:向节点js中的多个订阅的客户端发送电子邮件

首先渲染视图,然后发送电子邮件。

app.get('/:articlename',(req,res)=>{
  // DO YOUR STUFF
  // Render the article
  res.render('view');

  // Now process email stuff
  conn.query(`SELECT views,isAlreadySent FROM article_table WHERE article_name='${req.params.articlename}'`,(err,results,fields)=>{
    // if views greater then 5000 views and isAlreadySent is false then send email to subscribed user from database
    // SEND EMAIL HERE.
  });
});
,

我得到了答案。 我可以制作另一个与该网站不同的程序,该程序将在后台运行,它将检查文章,然后查看5000多个未邮寄的视图,并将其通过电子邮件发送给订阅的用户。 但是我还有一个问题,我们可以在AWS中运行后台流程吗?

,

经典且最简单的方法是添加一个循环。 for循环或while循环。 因此,您可能会执行以下操作:

for (let i=0;i<viewers.length;i++) { //assume that viewers is a list / array
    //sendmail()
}

这是用于同时发送邮件的代码。为避免滞后,请增加延迟。 如果要在运行时执行此操作,请进行while循环,条件是检测要发送的邮件的列表不为null。 同时,在获得电子邮件地址时,将邮件地址添加到列表中。当然,这不是最好的方法,但是它可以解决问题。

本文链接:https://www.f2er.com/3166377.html

大家都在问