我使用cfmail标签向用户发送电子邮件。我需要完成的另外一件事是在将记录发送给用户后删除它们。是否有任何可用的解决方案来观察cfmail任务是否完成。例如,像回调一样指示任务已经完成。
发布于 2015-08-11 13:26:19
对于电子邮件,不能保证电子邮件已经送达。
如果cfmail标记执行无误,cfml spool目录中会有一条记录。在服务器将邮件移交给SMTP服务器后,coldfusion将从假脱机目录中删除该电子邮件。
注意:如果你的服务器速度很快,你将永远看不到假脱机文件夹中的邮件。
您可以尝试构建一个检查邮件日志的解决方案,但即使这样也不能保证电子邮件已经送达。
在大多数情况下,知道cfmail已执行就足够了。
发布于 2015-08-11 13:29:21
<cfquery name="emailStuff">
SELECT * FROM mytable
</cfquery>
<cfloop query="emailStuff">
<cfmail>
cfmail contents/properties
</cfmail>
<cfquery>
DELETE FROM mytable WHERE ID=emailStuff.ID
</cfquery>
</cfloop>不确定上面是不是你要找的东西。但这是一个粗略的例子,一些代码将删除您的数据库条目后,邮件已发送。
cfmail还具有failto和debug的属性。
如果电子邮件失败,它会将失败的电子邮件发送给您在failto中指定的任何人,或者您可以使用debug记录失败的电子邮件。
请参阅:cfmail docs
更新:您还可以将delete查询移到循环之外,这样它只需要快速地从数据库中删除即可。
<cfloop query="emailStuff">
<cfmail>
cfmail contents/properties
</cfmail>
</cfloop>
<cfquery>
DELETE FROM mytable
WHERE ID IN (<cfqueryparam list="yes" value="#emailStuff.ID#" />)
</cfquery>https://stackoverflow.com/questions/31933718
复制相似问题