2012-03-09 4 views
4

多くの電子メール通知を送信するシステムで動作するLAMP環境にあります。自分の開発環境でPHPが実際のメールを送信しないようにしたいと思います。今、私はすべてのmail()行をコメントアウトしていますが、これはコメントアウトされた行を削除してテスターに​​プッシュするので、QAの人々と混乱を招き始めています。開発環境用のPHP sendmailを無効にする

PHPでエラーを投げずに簡単にsendmailを無効にできますか?私が意味する

class MyMailer { 
    private static $is_development_state = true; 
    public static function mail(...) { 
     if (self::$is_development_state) { 
      ... 
     } 
    } 
} 

答えて

1

なぜあなたは同じようにMailerclassを使用いけないMyMailerにメールをリファクタリング::メールがあなたのためのすべてのIDEを行うことができます;)

2

Fakemailまたはsmtp4devを見(Windowsのみの最後の1)これらのツールは、あなたのコードとテストメールの送信を変更しないですることができます。

1

また、あなたは、PHPでoverride_functionメソッドを使用しようとすることができます:それはあなたがダミー関数へのメール()関数を低下させることを可能にする

http://php.net/manual/en/function.override-function.php

。このようにしても何も起こりませんが、運用環境でoverride_functionをコメントすると、コードは本番環境で動作します。

3
また var/log/mailsにメールを書くために説明 hereのような小さなPHPスクリプトを設定することができ

:行を、

#!/usr/bin/php 
<?php 
$input = file_get_contents('php://stdin'); 
preg_match('|^To: (.*)|', $input, $matches); 
$filename = tempnam('/var/log/mails', $matches[1] . '.'); 
file_put_contents($filename, $input); 

/usr/local/bin/sendmailでスクリプトを入れて、それが実行可能にして置く

sendmail_path = /usr/local/bin/sendmail 

あなたのメールアドレスphp.ini

関連する問題