繁体   English   中英

延迟在C#中发送电子邮件

[英]Delaying the sending of emails in C#

我们正在编写一个功能,可以在x天内向客户发送提醒电子邮件,只是想知道是否可以延迟发送类似于Outlook中的电子邮件(新邮件>选项按钮>之前不提供)在C#中。

有谁知道这样做的方法?

如果要将电子邮件提交到SMTP服务器以保留数天,则服务器必须支持此功能。 不过,我建议不要这样做。 如果您遇到丢失电子邮件的问题,可能很难追踪。

这就是我要做的事情:

  1. 通过使一个表项安排在你的系统中的电子邮件。
  2. 在表格中包含“SendDate”列,您可以在其中设置日期
  3. 编写一个每15分钟唤醒一次的Windows服务(例如)并在该表中发送SendDate <currentDate的电子邮件

一种可能性是创建一个在计划任务处理“待处理”邮件上运行的服务。 您可以将挂起的邮件存储在SQL数据库中。 (戴夫详细说明)

如果您想避免“真正的”服务,本文看起来很有意义

http://www.codeproject.com/KB/aspnet/ASPNETService.aspx

没有。

实现此目的的方法是让您的应用程序将电子邮件写入队列(可能是数据库,文件,MSMQ等),然后编写一个单独的进程,以后再从该队列中读取邮件并发送它。

据我所知,SMTP协议没有任何“延迟发送”功能。 此外,您在Outlook中引用的功能实际上只是将其保留在客户端的发件箱中,直到指定日期,因此它是客户端功能,而不是服务器端功能。

SmtpClient是一个相当愚蠢的客户端,并不支持这一点 - 无论是同步还是异步,发送都是立即的。 您可以使用Exchange集成来执行此操作。 不过,我不确定为Exchange公开了哪些API。 最简单的方法是将消息与发送时间一起保存在数据库表中,并有一个离线进程定期扫描此表并查找发送时间已超过并且未标记的消息发送。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM