我个人无法想到一种方法来实现这一点,但我希望能有一个聪明的方法来使其工作。
我们需要定期向客户发送电子邮件,其中许多电子邮件已经过期并给我们带来了邮件投递失败。为了保持数据库的准确性和清洁度,当邮件未能成功发送给客户时,我希望从数据库中删除他们的记录。
因此,目前情况是这样的:
我们需要定期向客户发送电子邮件,其中许多电子邮件已经过期并给我们带来了邮件投递失败。为了保持数据库的准确性和清洁度,当邮件未能成功发送给客户时,我希望从数据库中删除他们的记录。
因此,目前情况是这样的:
<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>
当记录出现错误(例如,电子邮件地址格式不正确)时,我可以在catch区域内运行查询以删除记录。但是当邮件无法发送时,什么也不会发生。我会收到一个失败通知,但这些通知可能有几百个,因此手动从数据库中删除很困难。
有没有办法“捕捉”发送失败的电子邮件,然后将它们反馈到查询中以从数据库中删除?
cfmail
标签周围使用try/catch来实现它。我知道我们使用的其中一个电子邮件服务将向我们发送有关反弹电子邮件的API请求,然后我们可以从那里解析。但是您不会从cfmail结果中获得任何内容。 - beloitdavisja