2012-11-30 9 views
6

私は自宅でテスト目的で既存のサイトのコピーを作成する必要があります。私は会社の許可を得ている。phpのテストサイトから顧客に電子メールを送信しないようにする方法

しかし、データベースには、10,000件以上の顧客レコードが電子メールで保存されています。 私は、さまざまなテスト中にサイトに混乱を招く間に、間違って電子メールを送信したくありません。

私はemail#domain.com

+2

シンプル!あなた自身の(そして多分他の開発者の)電子メールをそこに残すユーザデータベースを空にしてください – Dale

+0

さらに、開発サーバがメールを "外部"に送信しないように設定してください。 –

+0

私は急いで私はデータベースのローカルコピーを意味するものではありません。 – Dale

答えて

7

私たちは皆、間違ってしまうことがある時代を持っているので、あなたが使うことができる最も馬鹿な方法は、しばしばこれらのものに最適です。間違いが本当にあなたの一日を台無しにするかもしれないときには、注意深く、境界線の編集的なものでさえ、最善です。

無力設定デフォルト

絶対に最も安全なシステムを運用サーバー上の本番サーバー用のSMTPサーバの設定を維持することです

のみ上で:

はここで働くかもしれないいくつかのメソッドですプロダクションサーバー。開発用のコピーには、GmailのSMTPアカウントをテストするような、他のSMTP設定があります。通常、GMailは通常のアカウントで1日あたり500通のメールを送信できるように制限しています。

考慮すべきもう一つは、データベース内の顧客の電子メールのすべてをスクラブそれらを削除し、[email protected][email protected]に置き換えるあなたが実際にそれらを受信して​​検査する気ならば、取っているデータベースに

をお客様の電子メールを交換してください+とその後の内容がGmailに配信されるために無視され、潜在的に無制限の電子メールアドレスが与えられるという利点があります。一例として、

UPDATE customers SET email=CONCAT('mytestaccount+', customer.id, '@gmail.com') 

あなたが好きなメールアドレスに、これをカスタマイズする必要があります。これを実行する利点の1つは、お客様の電子メールアドレスを貴社の開発ドライブおよびそれに関連するバックアップの上に置いておく貴重なリストを持たないことです。徹底させるためには、ハッシュされたパスワードをスクランブルする必要があります。そのため、データベースは基本的に潜在的なハッカーにとって価値がありません。パスワードが正しく保護されていないバックアップからパスワードが盗まれる回数が多すぎます。

次の最善のアプローチを追加することで、」配信不能

レンダリングお客様の電子メール。の最後にテスト」あなたはそれが難しい誰かの受信トレイに行くのではなく返送されますように送信したくない、システム内のすべてのメールに

これは基本的にワンライナーです:。

UPDATE customers SET email=CONCAT(email, '.test') 

オーバーライドメール配信時の

あなたはいつもあなたが故意に電子メールメッセージの受信者を代用する場所のようないくつかの条件付きロジックを含めることができます。あなたがすることによって、そのスイッチを無効にするかもしれないという可能性がありますので、これは危険なことができ事故、しかし、そう常に注意してください。

は、実際には、これは次のようになります。

if ($i_should_not_spam_customer_accounts_accidentally) 
{ 
    $mail->to = "[email protected]" 
} 

は、いくつかのメールサービスプロバイダは、電子メールメッセージをテストするときにあなたを助けることができるAPIを持っているサービス

ドリブンAPIを使用してください。私はPostageAppの共同設立者であり、電子メールを受信して​​配信するように特別に設定されたAPIキーを使用してメッセージを送信できるようにサービスが設計されています。 MailGunのような他のサービスも同様の方法で使用できます。失敗

シングルポイントこれは、しかし、離れ悲劇から1つの論理テストに良い感じではありません。あなたは大失敗がある前に間違っていなければならないものが複数のであることを確認する必要があります。

+0

おかげで非常に良かった。もう1つ、私はマネージャーや他のディストリビューターのように私が見つけることができないPHPファイルの100sで書かれたいくつかのharcoded電子メールアドレスがあるかもしれないと思う。どうすればそれらを取り除くことができますか?正規表現を使用するか、他のアイデアがある – user825904

+0

一般的な電子メールの正規表現は、 '/ \ b(\ S + \ @ \ S \ \ \ \ \ w +)\ b /'のように見え、すべてのソースファイル。バージョン管理システムにすべてがチェックインされていることを確認してください。変換を混乱させると、すぐに変更を取り消すだけでなく、変更内容を確認することもできます。 'perl -pi -e 's/\ b(\ S + \ @ S + \。\ w +)\ b/[email protected]/g' *'しかし、 'git'と' perl'は強力な組み合わせです。同じことを達成する他の方法があります。 – tadman

+0

これは、設定ファイルに電子メールアドレスを置くことが常に良いアイデアである理由です。テストアカウントに送信する特別な「開発モード」設定を持つのは簡単で、混乱した「Testy Testerpants」の発注書で同僚に迷惑をかけません。 – tadman

-6

変更例[email protected]のためのすべての電子メールアドレスを、他のものをテストするための電子メール機能を必要行うことを回避するために

いただきました!最良の方法。テストが完了したら、#@に置き換えることができます。

+0

"他のものをテストするために電子メール機能が必要です" – Dale

+1

これは、OPが単に 'mail()'を使用していることを意味します。 SMTP経由で直接通信する柔軟性のある代替手段は考慮していません。 –

0

データベースのコードやデータを変更したくない場合や、ローカルマシンでpostfixを使用している場合は、すべての送信メールをアドレスに書き換えることができます。さらに詳しい情報:http://www.postfix.org/ADDRESS_REWRITING_README.html

関連する問題