我正在使用 cfmail 标签向用户发送电子邮件。我需要完成的另一件事是在将记录发送给用户后删除它们。是否有任何解决方案可用于观察 cfmail 任务是否完成。例如,像一个回调来指示任务已完成。
问问题
266 次
2 回答
1
对于电子邮件,无法保证电子邮件已送达。
如果 cfmail 标记执行没有错误,则在 cfml spool 目录中会有一条记录。在服务器将邮件交给您的 SMTP 服务器后,coldfusion 会从假脱机目录中删除电子邮件。
注意:如果您的服务器速度很快,您将永远不会在假脱机文件夹中看到邮件。
您可以尝试构建一个检查邮件日志的解决方案,但即使这样也不能保证电子邮件已送达。
在大多数情况下,知道执行 cfmail 就足够了。
于 2015-08-11T05:26:18.727 回答
1
<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 文档
更新:您还可以将删除查询移到循环之外,以便它只需要快速从数据库中删除。
<cfloop query="emailStuff">
<cfmail>
cfmail contents/properties
</cfmail>
</cfloop>
<cfquery>
DELETE FROM mytable
WHERE ID IN (<cfqueryparam list="yes" value="#emailStuff.ID#" />)
</cfquery>
于 2015-08-11T05:29:21.473 回答