1

私は現在、アプリケーションの構築の最終段階にあり、ユーザーグループにアプリケーションの実稼働レベルの使用テストを実行するように依頼しました。私のアプリケーションは、請求書を含む注文が保存されたときに顧客に電子メールを送信する、その場しのぎの注文管理システムです。

昨日、テストを行っていたときに問題が発生しました。この環境には現在、古い顧客レコードを含む本番品質のデータが含まれています。いくつかの注文を処理して機能を忘れたところ、注文を行った顧客から注文が完了したというメールが届きました。それがうまくいったことは良いことですが、それがこの混乱につながることは悪いことです。

私が好むアクションは、受信者に関係なく、すべての電子メールを特定のアドレスに送信するようにアプリケーション内のどこかに設定することですが、このアプリケーションだけでオフにできるようにするだけで解決します。サーバーレベルでオフにすることは、電子メールを処理する他のアプリケーションでテストを実行する必要があるため、推奨されるオプションではありませんが、本番品質のデータは入力されません。

アプリケーションのサーバー設定を上書きして、環境の識別方法に基づいて特定のアドレスにのみメールを送信したり、メールをまったく送信しないようにするために使用できる特定のフラグやコードはありますか?

4

2 に答える 2

2

このページを参照してください:http: //cookbooks.adobe.com/post_How_can_I_use_Application_level_SMTP_Server_Settin-16469.html

テストの目的で、SMTPサーバーを存在しないIPアドレスに設定できます。cfmailルーチンは引き続き機能し、coldfusionはそれを配信不能フォルダーに移動します。

その周りにステートメントを追加<cfif>して、本番URLまたは開発URLのどちらを使用しているかを判断し、本番サーバーで適切なサーバーを使用するか、開発サーバーで「偽の」サーバーを使用するかを決定できます。または、運用サーバー上で、smtpサーバーを介して電子メールをテストしたり、電子メールをシャットオフして偽のSMTPサーバーにルーティングしたりするために使用できるon/off変数を用意します。

バージョン8.0以前の場合は、メールサーバーのアプリケーションレベル変数を設定し、cfmailタグを変更して以下を参照できます。

<cfmail server="#application.mailserver#" to="" from="" subject="">
于 2013-03-07T19:11:43.400 に答える
1

このソリューションは、同じメールサーバーを使用しているが、電子メールをテストアドレス(おそらくあなたのアドレスであるため、結果を確認できる)に交換することを前提としています。また、ライブサーバー名が「www.something.somethong」を持つものに解決されることも前提としています。dev / test/qaなどのサーバーはそうではありません。

アプリケーションcfconApplicationStart()で、次のことを試してください。

<cfscript>
  if(listFirst(CGI.SERVER_NAME,'.') != 'www') {
    Application.szEmailToTestEnv = 'test@somewhere.com'; // Use your test email here
  }
</cfscript>

次に、メールを送信する場所で、メールパラメータの前に次のようなロジックを追加します。

<cfscript>
  if(isDefined('Application.szEmailToTestEnv') && len(Application.szEmailToTestEnv)) {
    Variables.szEmailTo = Application.szEmailToTestEnv;
  } else Variables.szEmailTo = Variables.qCustomerEmail;
</cfscript>

そして、あなたのcfmailで:

<cfmail to="#Variables.szEmailTo#"....

必要に応じて、スコープと変数名および値を調整します。基本的に、ライブサイトではない「サイト」(たとえばdev.yoursite.com)は、アプリの起動時に設定したテストメールを使用してメールを送信し、ライブはコードを変更せずに正しい顧客のメールを引き続き使用します。ライブコードとテストコード。

于 2013-03-07T20:41:43.007 に答える