删除未发送电子邮件的电子邮件地址

vol*_*one 3 email coldfusion coldfusion-11

我个人无法看到这样做的方法,但我希望有一个聪明的黑客能够让它发挥作用.

我们必须定期向客户发送电子邮件,许多人的电子邮件过期并给我们邮件传递失败.为了保持数据库准确和干净,我想在电子邮件无法发送给他们时从数据库中删除他们的记录.

所以目前它有点像这样:

<cfloop query="rsCustomers">
<cftry>

<cfmail to="rsCustomers.Email" from="us@ourcompany.com" failto="fails@ourcompany.com" subject="Whatever">
[email text here]
</cfmail>

<cfcatch type="any">
<!--- just to skip this record when it fails to send --->
</cfcatch>
</cftry>

</cfloop>
Run Code Online (Sandbox Code Playgroud)

我可以在catch区域内运行查询,以便在记录中出现错误时删除记录(例如,格式错误的电子邮件地址).但是当邮件无法送达时没有任何反应.我收到了收件箱的失败通知,但这些通知可能有数百个,因此很难手动完成并从数据库中删除.

无论如何"抓住"未能发送电子邮件然后将它们反馈给查询以从数据库中删除?

Dan*_*cuk 5

有人曾在我参加的一个函数上做过这方面的演讲.方法是:

  • 发送邮件时,请在failto属性中使用特殊的电子邮件地址.
  • 编写一个.cfm文件,该文件使用cfpop标记来读取发送到该地址的邮件.(这可能是在cfexchange标签可用之前)
  • 添加读取传递失败通知的代码并提取电子邮件地址.
  • 对这些地址做些什么

演示者将此文件作为预定作业运行.