2

私たちはcoldfusion 9を使用しており、私たちのサイトが電子メールを送信するために使用する個々のSMTPアカウントには送信制限があります. 時刻に応じて 2 つのサーバーを交互に使用したいと考えています。

<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

すべての 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() は暗号化されたパスワードを返します。パスワードを設定するたびに、新しいソルトが使用されます。

サーバーを自動的に切り替えたい場合は、クォータをチェックし、超過した場合、または事前定義された間隔で切り替えるスケジュールされたタスクを作成します。

于 2012-08-15T02:37:35.517 に答える