2

我们使用coldfusion 9,并且我们的站点用于发送电子邮件的个人SMTP 帐户具有发送限制。我想根据一天中的时间在两台服务器之间交替。

<cfif timeformat(now(),'HH:mm:ss') GT '12:00:00' >
  <cfset email.username="foo@bar.com" />
  <cfset email.password="s3cr3t" />
<cfelse>
  <cfset email.username="baz@bar.com" />
  <cfset email.password="s3cr3t2" />
</cfif>

我想这样做Application.cfm(我们不使用cfc)并且不必修改任何cfmail标签......

4

2 回答 2

2

如果您想在每台服务器之间拆分电子邮件量,我建议保留一个值来告诉您接下来要使用哪个服务器:

这将进入您的应用程序文件。

    <cfscript>
        // get this hour
        ThisHour = hour(now());
        ServerOneHours = "1,3,5,7,9,11,13,15,17,19,21,23";
        if (listFind(ServerOneHours, ThisHour) gt 0) {
          application.email.username = "foo@bar.com";
          application.email.password = "s3cr3t";
        } else {
          application.email.username = "foo@ffooodoijdbar.com";
          application.email.password = "s3cr6516516513t";
        } 
    </cfscript>
</cffunction>

每当使用 cfmail 时,它都会使用当前设置:

<cfmail username="#application.email.username#" 
    password="#application.email.password#">
于 2012-08-10T17:04:54.470 回答
1

ServiceFactory如果您的所有 cfmail 标签都使用存储在您的 cf 管理员中的身份验证,您可以在运行时使用和更改应用程序中的设置MailSpooler

var mss = createObject('java','coldfusion.server.ServiceFactory').getMailSpoolService();
mss.setServer('you-mail-server-host-or-ip');
mss.setUsername('you-mail-server-username');
mss.setPassword('you-mail-server-password');

您可以使用 get() 方法取回设置:

var mss = createObject('java','coldfusion.server.ServiceFactory').getMailSpoolService();
var host = mss.getServer();
var user = mss.getUsername();
var pass = mss.getPassword();

getPassword() 返回您的加密密码。每次设置密码时,都会使用新的盐。

如果您想在服务器之间自动切换,请创建一个计划任务来检查您的配额并在超出时或以预定义的时间间隔进行切换。

于 2012-08-15T02:37:35.517 回答