2012-03-09 19 views
4

我處於一個LAMP環境,該環境在發送大量電子郵件通知的系統上工作。我想要一種方法來防止PHP在我的開發環境中發送實際的電子郵件。現在,我正在評論所有的mail()行,但這開始引起QA人員的困惑,因爲他們將註釋掉的行刪除,並將其推送給測試人員。禁用用於開發環境的PHP sendmail

任何簡單的方法禁用PHP中的sendmail而不會引發錯誤?

回答

1

你爲什麼不只是使用Mailerclass,如:

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

我的意思是:重構郵件MyMailer ::郵件可以做的每IDE爲你;)

2

Fakemailsmtp4dev(最後一個僅適用於Windows),這些工具可以讓你不修改代碼和測試郵件發送。你

1

也可以嘗試使用override_function方法在PHP中:

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

它可以讓你降低郵件()函數來虛擬功能。這樣沒有任何反應,但是如果您對生產環境的override_function發表評論,代碼仍然可以在生產環境中使用。

3

你也可以建立一個小型的PHP腳本等記述here的郵件寫var/log/mails

#!/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