我處於一個LAMP環境,該環境在發送大量電子郵件通知的系統上工作。我想要一種方法來防止PHP在我的開發環境中發送實際的電子郵件。現在,我正在評論所有的mail()行,但這開始引起QA人員的困惑,因爲他們將註釋掉的行刪除,並將其推送給測試人員。禁用用於開發環境的PHP sendmail
任何簡單的方法禁用PHP中的sendmail而不會引發錯誤?
我處於一個LAMP環境,該環境在發送大量電子郵件通知的系統上工作。我想要一種方法來防止PHP在我的開發環境中發送實際的電子郵件。現在,我正在評論所有的mail()行,但這開始引起QA人員的困惑,因爲他們將註釋掉的行刪除,並將其推送給測試人員。禁用用於開發環境的PHP sendmail
任何簡單的方法禁用PHP中的sendmail而不會引發錯誤?
你爲什麼不只是使用Mailerclass,如:
class MyMailer {
private static $is_development_state = true;
public static function mail(...) {
if (self::$is_development_state) {
...
}
}
}
我的意思是:重構郵件MyMailer ::郵件可以做的每IDE爲你;)
你的問題的另一個解決方案是設置您的本地後綴到本地傳遞。每封電子郵件都會發送到您的本地電子郵件帳戶!
https://serverfault.com/questions/137591/postifx-disable-local-delivery
也可以嘗試使用override_function方法在PHP中:
http://php.net/manual/en/function.override-function.php
它可以讓你降低郵件()函數來虛擬功能。這樣沒有任何反應,但是如果您對生產環境的override_function發表評論,代碼仍然可以在生產環境中使用。
你也可以建立一個小型的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