She*_*dez 0 .net c# sql sql-server
我们有这个模块,用户可以注册,他们需要确认他们的电子邮件地址.
目前我使用.NET发送电子邮件.所以在添加记录后,我现在将调用我的电子邮件方法.但我注意到有时候电子邮件功能确实收到超时错误,因为我捕获所有异常,这个错误会呈现给用户.
我想要的是在后台发送电子邮件.如果有任何邮件连接超时,电子邮件方法将只重试发送电子邮件大概一两分钟.我正在考虑使用SQL邮件来实现这一目标.但我不确定它是否是最好的解决方案.
你有几个选择:
使用SQL Server数据库邮件执行电子邮件排队和发送的繁重工作.应用程序仍将负责构造消息并将其发送到数据库.通过单独的SMTP服务器中继(直接在SQL计算机上安装SMTP服务可能不是一个好主意).
使用Web应用程序中的异步电子邮件方法,例如SmtpMail.SendAsync().这将允许您在不占用用户(或与用户交互)的情况下处理错误,但它不耐用.如果您的Web进程重新启动,则操作将丢失.
使用Windows服务.这将是一个简单的单独应用程序,它只是监视数据库中的新电子邮件任务和/或从Web应用程序发送需要执行任务的消息.
选项#2使用SendAsync()将是最快的实施.根据您的需要,这可能就足够了.
选项#1不需要更多的努力.当您需要围绕收件人列表和电子邮件内容实现复杂的业务逻辑时,选项#3真的很棒.也可以将选项#1和#3结合起来(参见评论中@RemusRusanu和我之间的对话).
使用选项#1和#3,如果环境出现故障,服务重新启动或发生错误,您将不会丢失任何数据或无法发送电子邮件.