流星按日期和时间发送电子邮件
meteor send email by date and time
我认为这是我在我的应用程序中处理的最困难的问题之一,我已经安装了时刻.js(使用地铁)。我想做的是让用户选择一个日期和时间,服务器将向该用户朋友发送电子邮件。例如:现在是星期四晚上 9:13,用户希望在星期一上午 6:47 发送消息。在用户设置了时间之后,我希望每周在用户设置的日期和时间重复发送电子邮件。所以我想使用 MOMENT.js就像那样(客户端):
var now = moment(); (the current date and time).
然后使用像jqueryui这样的日期选择器或一个常见的选择器,以及一个时间选择器,来设置用户选择的时间和日期,就像这样(客户端):
var day = user selection using datepicker;
var time = user selection using timepicker;
var result = moment.set(day,time);
将结果插入数据库:
DateToSendEmail.insert({date:result});
最后有代码真正执行 Email.send 函数(在服务器端):
var DateToSend = DateToSendEmail.findOne({});
var thisMoment = moment();
if(DateToSend === thisMoment){
Email.send({
to:[friends]
from:"myApplication@xxx.com"
Subject:"auto email send"
html:"auto email send"
});
}
我不知道的一件事是,如果用户没有进入应用程序一段时间(比如一个月),它是否会起作用,或者我应该使用 Meteor.setInterval 重复执行此功能?
我们在应用程序中做了一些非常相似的事情:
- 将待处理的电子邮件插入具有
emailAt
日期的Emails
集合中。 - 使用服务器上的
setInterval
定期轮询要发送的电子邮件。
轮询代码可能如下所示:
Meteor.startup(function() {
if (process.env.METEOR_ENV === 'production') {
Meteor.setInterval(sendPendingEmails, ONE_HOUR);
}
});
幸运的是,Date
对象都是用 UTC 编写的,因此您对它们执行的任何数学运算都应独立于用户或服务器的时区。此外,从Emails
集合中提取时可以使用$lte
,如下所示:
var sendPendingEmails = function() {
var currentDate = new Date();
var pendingEmails = Emails.find({emailAt: {$lte: currentDate}}).fetch();
...
};
重要的是要记住,您的服务器可能会被重置/挂起/等,因此您需要设置一个足够小的轮询间隔来补偿这一点,并在不对数据库施加太多负载的情况下接近emailAt
时间。
顺便说一句,如果您在操作或比较 moment 对象时遇到任何问题,您可能希望在它们与 DB 交互之前对它们调用toDate()
。
相关文章:
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- 使用angularjs验证文本框中的电子邮件
- 使用正则表达式评估电子邮件地址时出现性能问题
- javascript中添加验证电子邮件的问题
- 如何在收到电子邮件时自动调用脚本
- 获取屏幕截图并在电子邮件中发送的按钮
- 将项目履行与高级模板合并,并通过电子邮件发送至Netsuite 2.0
- php&js-将电子邮件添加到输入文本中
- 将用户制作的SVG(raphael.js)发送到服务器(php),以便通过电子邮件发送
- 以PDF附件的形式通过电子邮件发送谷歌文档
- 将Meteor中的base64 PDF作为电子邮件附件
- 来自现场目的的Meteor电子邮件.send()
- 根据部门用户的选择,接收来自多个电子邮件地址的Wordpress Contactform7查询
- Javascript/Ajax:通过点击按钮检查有效的电子邮件和电话号码
- 如果填写了特定值,则通过电子邮件发送电子表格中的数据
- 窗口提醒或类似内容中的电子邮件表单
- 通过phonegap中的电子邮件发送存储在html5 localStorage中的信息
- 流星按日期和时间发送电子邮件
- 需要在 PHP 脚本中使用用户的本地时间来发送电子邮件 - 我如何从 JS 中获取数据并在我的 php 中使用它
- 谷歌应用程序脚本:电子邮件提醒从列值中提取时间