2012-03-09 47 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