当前位置:  开发笔记 > 后端 > 正文

发送电子邮件,但不是现在

如何解决《发送电子邮件,但不是现在》经验,为你挑选了2个好方法。

我正在编写一个用户将创建约会的应用程序,并立即收到确认其约会的电子邮件.我还想在他们预约的那天发送电子邮件,提醒他们实际出现.

我在MS SQL上的ASP.NET(2.0).即时电子邮件没问题,但我不确定解决提醒电子邮件的最佳方式.基本上,我可以想到三种方法:

    设置每晚运行的SQL作业,将SQL电子邮件发送给当天有约会的人.

    以某种方式发送电子邮件时带有"请勿提前交付"标志,尽管这似乎是我可能正在发明的东西.

    编写另一个每晚在特定时间运行的应用程序.

我错过了一些明显的东西吗 我怎么能做到这一点?



1> TravisO..:

选择#1将是最佳选择,创建要发送的电子邮件表,并在发送每封电子邮件时更新表.最好不要删除条目,但将其标记为已发送,您永远不知道何时会出现问题并希望重新发送电子邮件,我已经在类似的设置中看到过多次这种情况.



2> Kelvin Meeks..:

一个警告 - 在Web应用程序中紧密耦合初始电子邮件的传输可能导致脆弱的体系结构(例如,SMTP服务器不可用) - 以及丢失的消息.

您可以通过MSMQ为初始和提醒电子邮件引入抽象层 - 并使服务按计划扫描队列.初始消息可以使用一个属性来标记,该属性意味着"立即发送" - 提醒消息可以被标记为"已安排" - 并且清理程序只需要发送它发现的"现在发送"或者是"现在发送"的任何消息"SCHEDULED"并且有一个toBeSentDate> =当前日期.消息成功发送后 - 可以通过从队列中删除消息来结束工作单元.

这种方法可确保消息不会丢失 - 并通过调整服务轮询间隔来实现负载分配到非高峰时段.

正如罗布·威廉姆斯所指出的那样 - 我对MSMQ的建议对于这个具体问题来说有点过分了......但是当你开始考虑规模问题时你应该记住这一点 - 并且你想要(或者需要)最小化/减少数据库读/写活动(特别是在高峰处理期间).

帽子小费给Rob.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有