我处于一个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