我们使用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
代码......
答案 0 :(得分:2)
如果您想在每台服务器之间拆分电子邮件量,我建议保留一个值,告诉您下一步要使用哪台服务器:
这将放在你的appplication文件中。
<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#">
答案 1 :(得分:1)
如果所有cfmail标记都使用cf admin中存储的身份验证,则可以使用ServiceFactory
和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()返回加密的密码。每次设置密码时,它都会使用新的盐。
如果要自动在服务器之间切换,请创建一个计划任务,在超出时或按预定义的时间间隔检查配额和交换机。