0

我想知道是否有人有在 ColdFusion 中发送电子邮件而不使用cfmail标签的经验。我问是因为我想使用第三方服务(PostMark)来发送它们,但不确定如何保留我真正喜欢的一些方面cfmail,例如分组查询等。

我可能可以通过一些工作来解决这个问题,但希望其他人已经这样做了,所以我不必重新发明轮子。

在我的脑海中,我知道这将涉及:

  1. 从查询中正确生成标头和收件人
  2. 从分组查询创建输出(可能使用cfsavecontent?存储它)
  3. 遍历每封生成的电子邮件并将其发送到 API

听起来对吗?

更好的是备用,这样如果由于某种原因 API 不可用,电子邮件仍然会被发送,但这次使用 SMTP。

显然,最好的方案是将所有这些都包装在自定义标签中,这样我几乎唯一要做的就是更改cfmailcf_mail_special其他东西。

唯一真正的困难在这里:

<cfmail from="info@example.org" to="#email#" subject="Your widget #foo#" query="Recipients">

内置的 ColdFusion 标签中可以有磅符号,不会立即评估,但它们将用于我的自定义标签。所以我想我必须重写它

<cf_mail_special from="info@example.org" to="##email##" subject="Your widget ##foo##" query="Recipients">

然后运行Evaluate它?

4

2 回答 2

1

您可以使用PostMark SMTP API

或者,有一个您可能会使用的Java 库,可能隐藏在您的 cf_mail_special 标签后面?

于 2012-10-11T16:11:48.543 回答
0

如果您想在没有 cfmail 和 smtp 的情况下发送消息,您还可以查看 sendgrid.com 并查看他们的 api。

此外,根据您运行的服务器类型,如果您使用的是 microsoft windows server,例如 2003,您可以使用 cffile 创建一个文件,将文本文件写入 mailroot 拾取文件夹,它将绕过 Coldfusion 的 cfmail 标记。

我遇到过类似的问题,CFMAIL 将其锁定并让 spool 文件夹仅存储消息,直到重新启动 java 邮件服务器或重新启动 cf 服务。自cf6以来一直在处理它。

我编写了一个计划的例程,每 10 分钟检查一次我的假脱机文件夹。它会查看文件夹中最旧的文件,如果文件超过 9 分钟,它会通过 twillio 向我的手机发送一条短信,或者我可以让它重新启动 CF 服务。

我可能每个月或 2 个月会看到一次,但它让我能够掌握它。

我还没有找到一个真正解决这个问题的方法。

于 2012-10-12T13:46:12.087 回答