如何确保我不会通过php中的测试站点向客户发送任何电子邮件

时间:2012-11-30 08:03:01

标签: php mysql apache email

我必须制作现有网站的副本,以便在家中进行测试。我得到了公司的许可。

但是在数据库中,我有超过10,000条客户记录和电子邮件。 我不想在他们在各种测试中弄乱网站的时候不小心向他们发送任何电子邮件。

什么是避免这种情况的最佳方式

我确实需要用于测试其他内容的电子邮件功能

3 个答案:

答案 0 :(得分:7)

你可以使用的最愚蠢的方法往往是最好的这些东西,因为我们都有可能出错的任何日子。当一个错误真的毁了你的一天时,最好小心,甚至是偏执的偏执狂。

以下是一些可行的方法:

默认无效配置

绝对安全的系统是在生产服务器上保留生产服务器的SMTP服务器配置,在生产服务器上保留。您的开发副本将具有一些其他SMTP配置,例如测试GMail SMTP帐户。通常,GMail会限制您在普通帐户中每天发送500封电子邮件,因此如果您真的搞砸了某些内容,您很快就会达到这个限制。

替换数据库中的客户电子邮件

要考虑的另一件事是清理数据库中的所有客户电子邮件,删除它们并用mytestaccount+0000@gmail.commytestaccount0001@gmail.com替换它们,如果您真的需要实际接收和检查它们,请利用这一事实传送到GMail时会忽略+及后续内容,从而有效地为您提供无限的潜在电子邮件地址。

举个例子:

UPDATE customers SET email=CONCAT('mytestaccount+', customer.id, '@gmail.com')

您必须将其自定义为您想要的任何电子邮件地址。这样做的一个好处是,您将无法在开发驱动器上找到有价值的客户电子邮件地址列表以及任何相关的备份。为了彻底,您应该尽可能地加扰哈希密码,这样数据库对于潜在的黑客来说基本上毫无价值。从未正确保护的备份中删除密码的次数太多。

呈现客户电子邮件无法送达

下一个最好的方法是在您不想发送的系统中每个电子邮件的末尾添加“.test”,这样它就会难以反弹而不会转到某人的收件箱。

这基本上是一个单行:

UPDATE customers SET email=CONCAT(email, '.test')

在投放时覆盖电子邮件

您可以随时添加一些条件逻辑,例如您将故意替换电子邮件的收件人。这可能有风险,因为你可能会意外地禁用那个开关,所以一如既往地要小心。

在实践中,这看起来像:

if ($i_should_not_spam_customer_accounts_accidentally)
{
  $mail->to = "nobody@nowhere"
}

使用API​​驱动的服务

某些邮件服务提供商拥有可在测试电子邮件时为您提供帮助的API。我是PostageApp的联合创始人,该服务的设计使您可以使用专门配置为接收但不发送电子邮件的API密钥发送消息。其他服务如MailGun也可以类似的方式使用。

无单点故障

但是,远离悲剧是一种合乎逻辑的考验并不是一种好的感觉。在遇到惨败之前,你应该确保有几个事情必须出错。

答案 1 :(得分:0)

如果您不想更改数据库中的代码或数据,并且在本地计算机上使用postfix,则可以将所有外发邮件重写为地址。更多信息:http://www.postfix.org/ADDRESS_REWRITING_README.html

答案 2 :(得分:-6)

将所有电子邮件地址,例如email@domain.com更改为email#domain.com。测试完成后,您可以将#替换为@