6

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

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

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

我确实需要电子邮件功能来测试其他东西

4

3 回答 3

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等其他服务也可以类似的方式使用。

无单点故障

不过,远离悲剧的逻辑测试并不是一种好感觉。在你遭遇惨败之前,你应该确保有件事情会出错。

于 2012-11-30T08:28:49.067 回答
0

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

于 2012-11-30T08:23:04.970 回答
-6

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

于 2012-11-30T08:06:17.377 回答