2009-12-15 68 views
5

我正在开发一个PHP应用程序,我的MacBook运行Snow Leopard,实际上是在PHP的mail()函数被调用时发送电子邮件。这是发送电子邮件的客户,这是糟糕的。在Mac OS上禁用PHP邮件?

我可以防止这在我的代码,但我宁愿只是禁用邮件为我的机器。有没有办法在Mac OS下执行此操作?

回答

3

我通常使用一个包装类,对于一个恒定的(像DEBUG_MODE)检查并发送电子邮件给我,而不是原始收件人的(包括所有原始收件人的邮件()在邮件正文中,所以我可以确认事情正在工作)。这是第一次有点额外的工作,但这意味着我不必担心发送电子邮件给“真正”的人,但我仍然知道事情正在发挥作用。我已经发布了simple example。它可以使用很多改进(标题处理,确保cc和bcc字段也被删除),但它会让你回家的路上大部分。

+0

+1这样的解耦功能是一个好主意(tm) – rossipedia 2009-12-15 22:49:16

1

这意味着你必须在某个时候安装了sendmail(或者假装为sendmail的东西),但是除了禁用它之外,你应该在代码中阻止它。

+0

OS X带有一个内置版本的postfix。 – 2009-12-15 21:34:51

+1

当然,将/ usr/sbin/sendmail移动到/usr/sbin/sendmail.original并用一个空的sh脚本替换sendmail应该可以在全局范围内实现。 – 2009-12-15 21:43:37

+0

它不应该配置为实际执行任何操作。 – 2009-12-15 21:51:42

0

您应该可以通过更改SENDMAIL_PATH设置关闭邮件()。文档here

2

为什么不将电子邮件地址移动到配置文件,然后在您的机器上使用不同的地址集?像这样的东西不应该被硬编码到应用程序中。

例如,在我的应用程序中,我有一个可容纳所有信息的Config数据库。当应用程序正在工作时,Config表被设置为虚拟或无害地址/信息。这样,您就不必在开发PC上混淆任何东西,并且更容易维护,就像电子邮件地址发生变化一样。

+0

为什么downvote?这实际上是一个好主意,比阉割邮件更清洁()。 – 2009-12-15 21:35:53

+0

我的应用程序拥有数以十万计的用户电子邮件地址。坏解决方案尽管如此,由于没有提供足够的背景,我认为反对票是不公平的。 – 2009-12-15 21:42:38

+0

大多数Web应用程序框架都维护生产环境和非生产环境的概念,并据此做出运行时决策并非偶然。 “糟糕的解决方案”似乎完全属于你。 – 2009-12-15 22:00:16

-1

你可以试试php.ini中的disable_functions选项。

如:disable_functions = mail

+0

这不会导致他的脚本尝试发送邮件的错误吗? – 2009-12-15 21:36:27

+0

确实如此,但它是一种禁用邮件功能的方法,这就是问题所在。 – 2009-12-15 22:46:38

3

谢谢你的职位。这是我的解决方案。

我已将/ usr/sbin/sendmail移至/usr/sbin/sendmail.original,并用dummy sh脚本替换了/ usr/sbin/sendmail。我不希望这台机器发送电子邮件。

我也实现了第二种解决方案,从而检查当前机器是否为开发机器,如果是,则不发送电子邮件。为此,我使用一个标志Config :: get('IS_DEVELOPER')。