0

我正在使用 cfmail 标签向用户发送电子邮件。我需要完成的另一件事是在将记录发送给用户后删除它们。是否有任何解决方案可用于观察 cfmail 任务是否完成。例如,像一个回调来指示任务已完成。

4

2 回答 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 回答