Переключение между почтовыми серверами в Application.cfm
Мы используем 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
теги...
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#">
Если все ваши теги 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() возвращает ваш пароль в зашифрованном виде. Каждый раз, когда вы устанавливаете пароль, он использует новую соль.
Если вы хотите автоматически переключаться между серверами, создайте запланированное задание, которое проверяет вашу квоту и переключается при превышении или через заданный интервал.