【问题标题】:If No Tweets Are Selected Don't Send Email如果未选择推文,请勿发送电子邮件
【发布时间】:2016-05-04 11:13:11
【问题描述】:

一直在开发这个应用程序 www.prhunters.com 它扫描 Twitter 并提取包含某些关键字的推文。

下面的代码管理每天发送一次的每日摘要电子邮件。但是,有些日子没有匹配的电子邮件是空的。

如何自定义下面的代码,只在有推文时发送,而在电子邮件为空时不发送?

感谢您的帮助!

export function sendDailyTweets({notifications}){
console.log('send daily tweets');
let promises = putValuesInArray(mapObject(notifications, (email, matches) => {
    return new Promise(function(resolve, reject){
        //console.log(matches);
        let template_object = {
            showHeader: true,
            date: moment().format('MMMM Do YYYY'),
            categories: []
        };

        mapObject(matches, (keyword, tweets) => {
            template_object.categories.push({
                name: keyword,
                tweets: tweets.map( (tweet) => {
                    return {
                        authorImage: tweet.user.profile_image_url_https.replace('_normal','_bigger'),
                        authorName: tweet.user.name,
                        authorLink: 'https://twitter.com/'+tweet.user.screen_name,
                        authorScreenname: tweet.user.screen_name,
                        tweetText: tweet.text,
                        tweetLink: 'https://twitter.com/'+tweet.user.screen_name+'/status/'+tweet.id_str
                    };
                })
            });
        });

        let html = emailTemplate(template_object);

        mandrill.messages.send({
            message: {
                to: [{
                    email: email
                }],
                from_email: 'support@prhunters.com',
                from_name: 'PR Hunters',
                subject: "Daily PR Opportunities",
                html,
                tags: ["tweet_notification"],
                track_opens: true,
                auto_html: true,
                preserve_recipients: false
            }
        },function(result){
            console.log('email sent!',result);
            if(result[0].status === "rejected" || result[0].status === "invalid"){
                reject("Error sending email: "+result[0].reject_reason);
            }
            resolve(result);
        },function(error){
            console.error('error sending email',error);
            reject(error);
        });
    });
}));
}

【问题讨论】:

    标签: node.js email heroku twitter


    【解决方案1】:

    发送电子邮件的位是...

    mandrill.messages.send
    

    因此您只需将该代码包装在 IF 条件中。

    if (number of tweets>0) {
         mandrill.messages.send
    }
    

    您只需要确定正确的条件即可计算出推文数量是否大于0。

    查看 template_object 并比较没有匹配项和匹配项的情况,并使用它来确定相关条件。

    【讨论】:

      猜你喜欢
      • 2015-03-17
      • 2016-06-20
      • 1970-01-01
      • 2019-08-09
      • 2016-08-20
      • 1970-01-01
      • 2020-05-07
      • 2011-09-12
      • 2015-08-10
      相关资源
      最近更新 更多