我目前正致力于指定一个软件,生成的电子邮件将成为系统的重要组成部分。
在调查中,我可以从数据库中提取我需要的所有信息,并创建带附件的电子邮件,并使用数据库的内置邮件功能(Oracle和SQL Server)发送它们。
我的另一个选择是在我的应用程序代码中生成电子邮件。
由于我不需要在电子邮件上进行任何花哨的格式化,最好的方法是什么?在实现我的目标方面似乎没有区别;使用数据库的唯一好处是我可以设置要在更新行的触发器上发送的电子邮件。
答案 0 :(得分:5)
我会在应用程序代码中执行此操作。将数据存储保留在数据库中,并将应用程序逻辑留给应用程序。
答案 1 :(得分:2)
我们在为公司开发的应用程序中以两种方式发送电子邮件。从长远来看,应用方法已经取得了很好的效果。错误处理在应用程序中被视为理所当然,但由于地址格式错误等原因,数据库引擎可能会或可能不会死亡,并且以后很难跟踪故障。
答案 2 :(得分:1)
如果将其放入应用程序代码中,将更容易将该过程分解为可测试的小块。
尽可能多地将逻辑放入生成消息而不发送消息,以便您可以测试大部分代码而无需实际发送和接收电子邮件。
答案 3 :(得分:1)
我认为真正的答案取决于电子邮件发送一次的严重程度以及您想要做多少错误检查。让我解释一下:
我们有一个事件报告系统,可在输入事件时发送电子邮件。我没有意识到电子邮件的数量,我们原本只是一次发送一批100封(SMTP限制)并通过群组加载,如果有更多 - 在一些销售后我们发现超过几千个被发送在每个条目上,它们可能需要将近一分钟才能发送它们 - 创建一个邮件线程并不是真正的好匹配所以我们创建了一个邮件队列并且每5分钟就有一个作业循环并发送任何未发送的邮件 - 错误 - 如果阙被耽搁,或者如果阙中有太多的电子邮件需要超过5分钟才能运行它会重新开始,我们有一些电子邮件被发送2,3,4甚至10次 - 可能有是糟糕的设计,但无论如何
我们最终只是将整个事情移动到SQL Servers邮件阙并且它一直像冠军一样运行 - 真正的教训(在我看来)是做所有处理但是你需要进入你的程序但是一旦你知道了电子邮件将被发送,并将其传递给专门处理电子邮件发送的内容(CDO,Sql Server邮件,Oracle无论如何)
您仍然可以在应用中测试所需的所有逻辑,但可以通过构建用于处理电子邮件的内容来处理电子邮件。