哪个更好使用.net或SQL表中的触发器发送电子邮件

She*_*dez 0 .net c# sql sql-server

我们有这个模块,用户可以注册,他们需要确认他们的电子邮件地址.

目前我使用.NET发送电子邮件.所以在添加记录后,我现在将调用我的电子邮件方法.但我注意到有时候电子邮件功能确实收到超时错误,因为我捕获所有异常,这个错误会呈现给用户.

我想要的是在后台发送电子邮件.如果有任何邮件连接超时,电子邮件方法将只重试发送电子邮件大概一两分钟.我正在考虑使用SQL邮件来实现这一目标.但我不确定它是否是最好的解决方案.

Tim*_*ora 5

你有几个选择:

  1. 使用SQL Server数据库邮件执行电子邮件排队和发送的繁重工作.应用程序仍将负责构造消息并将其发送到数据库.通过单独的SMTP服务器中继(直接在SQL计算机上安装SMTP服务可能不是一个好主意).

  2. 使用Web应用程序中的异步电子邮件方法,例如SmtpMail.SendAsync().这将允许您在不占用用户(或与用户交互)的情况下处理错误,但它不耐用.如果您的Web进程重新启动,则操作将丢失.

  3. 使用Windows服务.这将是一个简单的单独应用程序,它只是监视数据库中的新电子邮件任务和/或从Web应用程序发送需要执行任务的消息.

选项#2使用SendAsync()将是最快的实施.根据您的需要,这可能就足够了.

选项#1不需要更多的努力.当您需要围绕收件人列表和电子邮件内容实现复杂的业务逻辑时,选项#3真的很棒.也可以将选项#1和#3结合起来(参见评论中@RemusRusanu和我之间的对话).

使用选项#1和#3,如果环境出现故障,服务重新启动或发生错误,您将不会丢失任何数据或无法发送电子邮件.