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

Если вы хотите автоматически переключаться между серверами, создайте запланированное задание, которое проверяет вашу квоту и переключается при превышении или через заданный интервал.

Другие вопросы по тегам