【问题标题】:Coldfusion CFMAIL and sendgridColdfusion CFMAIL 和 sendgrid
【发布时间】:2012-11-09 00:32:24
【问题描述】:

我在托管的同一台服务器上有 2 个客户端,它们都通过 sendgrid.com 发送电子邮件(都有自己的帐户)。

我正在查看 sendgrid 上的报告,并注意到来自“客户 1”的类别出现在“客户 2”的报告中。

我在 sendgrid 的电话上花费了大量时间,他们告诉我,“客户 1”的 3000 封电子邮件中有 65 封电子邮件显示是通过“客户 2”的经过身份验证的用户发送的。

在我的脚本中,我使用coldfusion cfmail 并在标签中指定该客户端的SMTP 地址、用户名和密码。

一个可能的理论考虑了管理员邮件下的“维护与邮件服务器的连接”复选框。

“选中此复选框可保持与邮件服务器的连接处于打开状态,以便在发送邮件后重复使用(推荐)。”

如果两个客户端同时发送电子邮件(很有可能),coldfusion 邮件假脱机引擎会根据服务器/用户名和密码将它们分开,还是将它们全部发送到当前打开的邮件服务器?

如果我取消选中维护与邮件服务器的连接复选框...资源的缺点是什么?我的客户整天都在发送新闻通讯和交易电子邮件,每个客户可能大约 10k。

【问题讨论】:

  • 我可以尝试一下。如果我在我的一个域中为 sendgrid.mydomain.com 创建一个 cname 别名并在我的代码中更改我的服务器地址,我希望coldfusion 认为它是一个不同的服务器并为该域打开一个单独的连接,这样邮件就不会混淆.

标签: coldfusion sendgrid cfmail


【解决方案1】:

我最终修改了我的服务器中的 DNS 设置,添加了一个指向 smtp 地址的 cname,smtp.sendgrid.net。然后我更新了我的代码以使用新的服务器名称,这似乎分离了连接。

【讨论】:

  • 从 CF11 更新 7 开始,现在应该已修复此问题。
【解决方案2】:

我不知道您正在运行什么版本的 ColdFusion,但在 ColdFusion 9 中添加了一个新功能,允许您在 Application.cfc 文件中指定 SMTP 服务器设置。假设您的 2 个站点有单独的 Application.cfc 文件,那么这可能对您有用。

Here is a reference to the new feature in ColdFusion 9

这是来自该引用页面的文本。

问题
如何使用 ColdFusion 服务器中托管的应用程序的不同 SMTP 服务器设置来发送电子邮件。

解决方案
通过使用 Application.cfc 文件中的 ColdFusion 9 新的“smtpServersettings”功能,我们可以为应用程序指定不同的 SMTP 服务器设置。

详细说明
ColdFusion 9 在 Application.cfc 文件中添加了一个名为“smtpServersettings”的新属性。我们可以在 Application.cfc 中的 THIS 范围的“smtpServersettings”属性中指定 SMTP 服务器设置详细信息,该属性采用三个值,它们是服务器、用户名和密码作为结构。

<cfcomponent displayname="CF9ApplicationVariables" output="false">

   <cfset this.name   = "CF9ApplicationVariables" />
   <cfset this.smtpserversettings   = {
                          server="mailServerAddress",
                          username="userEamilID",
                          password="userPassword"
                          } />
</cfcomponent>

现在 CFMail 标记将使用服务器详细信息来发送邮件,如 Application.cfc 中的“smtpServersetting”中所述,它不会使用 ColdFusion 9 管理员中指定的服务器值。如果不使用“smtpServersetting”属性,那么 CFMail 将正常运行。

【讨论】:

  • 谢谢,我正在运行 CF9,但不知道这一点。大多数时候,我在管理员中使用默认邮件服务器,即我的本地 SMTP 服务器,但在这种情况下,我有 2 个不同的站点使用远程 SMTP 服务器(恰好是同一台服务器,但用户名和密码不同)。似乎当coldfusion为该服务器保持连接打开时,它不会检查身份验证信息是否已更改并继续使用相同的登录会话,因为它的服务器URL相同。
  • 对于我运行 CF9 的价值,我也没有意识到这一点。似乎它可能值得一试。如果您确实尝试过,请发回您的结果。由于这只允许您指定服务器、用户名和密码,我不确定维护连接设置(或任何其他管理设置)将如何发挥作用。
  • 当您使用 cfmail 处理查询时,coldfusion 会生成一堆外发邮件并将其放入假脱机文件夹。然后,coldfusion 邮件假脱机程序会拾取每条消息并对其进行检查。如果没有定义特殊的邮件服务器,它会通过默认的邮件服务器传递它。如果您指定备用邮件服务器,它会创建到它的连接。如果您在管理员中保留“保持连接”复选框,而不是为每条消息登录 1 次,它将通过连接发送多条消息。但是,就我而言,我使用 1 台具有多个用户名的服务器并且...
  • 密码。它没有识别出用户名和密码与它进行身份验证的用户名和密码不同,而是忽略了用户名和密码并继续发送。我在我的服务器上托管了 2 个使用 sendgrid 的不同客户端,在正常工作时间内,它们完全有可能同时分批发送电子邮件,并且 2 个会话交叉。感谢您的反馈。我在下面找到的 DNS 解决方案是围绕我认为在 CF 9 中找到的“错误”的明确工作。
猜你喜欢
  • 2019-08-23
  • 2016-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多