繁体   English   中英

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

[英]Which is better to send e-mail using .net or trigger in the SQL table

我们有此模块,用户可以在该模块中注册,并且需要确认其电子邮件地址。

目前,我使用.NET来发送电子邮件。 因此,添加记录后,我现在将调用我的电子邮件方法。 但是我注意到的是,有时电子邮件功能确实会收到超时错误,并且由于我捕获了所有异常,因此该错误会呈现给用户。

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

您有几种选择:

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

  2. 使用Web应用程序中的异步电子邮件方法 ,例如SmtpMail.SendAsync() 这将使您能够处理错误而不会牵扯到用户(或与用户进行交互),但这并不持久。 如果您的Web进程重新启动,则该操作将丢失。

  3. 使用Windows服务。 这将是一个简单,独立的应用程序,该应用程序仅监视数据库中的新电子邮件任务和/或从Web应用程序接收到需要执行任务的消息。

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

选项1不需要付出更多的努力。 当您需要在收件人列表和电子邮件内容周围实现复杂的业务逻辑时,选项3确实很有用。 也可以将选项#1和#3组合在一起(请在评论中查看@RemusRusanu和我之间的对话)。

使用选项#1和#3,如果环境下降,服务重新启动或发生错误,您将不会丢失任何数据或发送电子邮件。

而是在.net应用程序中管理超时。 如果触发器存在问题或超时,则可能不会提交您的数据。 而是允许数据库完成数据事务,并从.net App检查状态。

我认为对此没有明确的答案,但这是我的偏爱。

暂无
暂无

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

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