所以,我一直在尝试各种不同的想法来尝试发送电子邮件通讯,并且几乎每一次都遇到障碍。
我目前正在使用共享托管环境,并且需要它在此环境中保持稳定。
我曾想创建一个定时的、计划的系统,将批处理作为后台服务发送,但在这种环境下我无法做到这一点,所以我现在只需将长时间超时的 AJAX 发布到 .NET 表单函数即可。
我有一个发送电子邮件的通用功能,并且正在循环访问我的数据库,如下所示
For Each email In list
If Common.isValidEmail(email("email")) Then
Try
Common.sendEmail(email("email"), Common.tCase(email("email")), content, subject, "true", "newsletter", "customer")
Catch ex As Exception
errorList += email("id") & ","
End Try
Else
Common.changeData("DELETE FROM mailingList WHERE id='" & email("id") & "'")
End If
Next
我在这里发现了两个潜在的错误情况,该isValidEmail
函数检查电子邮件是否正确,然后我尝试发送邮件,如果失败,我将建立一个错误列表。
但是,如果服务中断,这并不好。
所以,我正在考虑通过在每个电子邮件地址的数据库行中添加一个“已发送”标志来修改它,但这需要为每个循环写入数据库,这会拼命减慢它吗?
然后任何时候它退出,我可以回到数据库并重新发送给没有被标记的用户。
有没有人有更好的想法?!
从长远来看,我希望这是一项后台服务,并且正在考虑将其迁移到 Azure,希望我可以在其中运行预定的后台服务,但现在,我需要一个共享环境的解决方法。