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

Ran*_*ngh 6 php mysql apache email

我必须在现场制作现有网站的副本以供测试.我得到了公司的许可.

但在数据库中,我有超过10,000条客户记录和电子邮件.在各种测试期间,当我弄乱网站时,我不想意外地向他们发送任何电子邮件.

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

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

tad*_*man 7

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

以下是一些可行的方法:

默认情况下的无效配置

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

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

另一个要考虑的是擦洗所有客户的电子邮件的数据库,删除它们,并代替它们mytestaccount+0000@gmail.commytestaccount0001@gmail.com如果你关心实际接收并检查它们,采取的事实优势+和随后的内容交付给GMail的忽略,有效给你无限的潜在电子邮件地址.

举个例子:

UPDATE customers SET email=CONCAT('mytestaccount+', customer.id, '@gmail.com')
Run Code Online (Sandbox Code Playgroud)

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

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

下一个最好的方法是在您不想发送的系统中的封电子邮件的末尾添加".test",这样它就会很难反弹而不是去某人的收件箱.

这基本上是一个单行:

UPDATE customers SET email=CONCAT(email, '.test')
Run Code Online (Sandbox Code Playgroud)

在交货时超载电子邮件

您可以随时包含一些条件逻辑,例如您将故意替换电子邮件的收件人.这可能有风险,因为您可能会意外地禁用该开关,因此,请务必小心.

在实践中,这看起来像:

if ($i_should_not_spam_customer_accounts_accidentally)
{
  $mail->to = "nobody@nowhere"
}
Run Code Online (Sandbox Code Playgroud)

使用API​​驱动的服务

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

没有单点故障

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