php - 我怎样才能确保我不会从 php 测试站点向客户发送任何电子邮件

标签 php mysql apache email

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

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

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

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

最佳答案

对于这些事情,您可以使用的最防白痴的方法通常是最好的方法,因为我们都有这样的日子,任何事情都可能出错。最好小心,即使是近乎偏执,一个错误可能真的毁了你的一天。

以下是一些可能有效的方法:

默认配置无效

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

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

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

举个例子:

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

您必须将其自定义为您想要的任何电子邮件地址。这样做的一个好处是您不会在您的开发驱动器和任何相关的备份中保留一份有值(value)的客户电子邮件地址列表。为了彻底,您可能还应该加扰散列密码,这样数据库对潜在的黑客来说基本上毫无值(value)。太多次密码从未得到妥善保护的备份中被删除。

使客户电子邮件无法送达

下一个最佳方法是将“.test”添加到系统中您不想发送的每封 电子邮件的末尾,这样它就会硬退回,而不是转到某人的收件箱。

这基本上是一条线:

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

在交付时覆盖电子邮件

您始终可以包含一些条件逻辑,例如您将在何处有意替换电子邮件消息的收件人。这可能有风险,因为您可能会不小心禁用该开关,但请一如既往地小心。

在实践中,这看起来像:

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

使用 API 驱动的服务

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

无单点故障

不过,远离悲剧的逻辑测试并不是一种好感觉。您应该确保在失败之前有几个必须出错的地方。

关于php - 我怎样才能确保我不会从 php 测试站点向客户发送任何电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13641172/

相关文章:

Apache http 服务器每 60 秒断开一次连接

apache - 将SSL请求从Apache服务器转发到Tomcat时出现403(禁止)错误

php - 如何按名称从类别的子类别中获取帖子?

javascript - 使用 JavaScript 的 FormData 对象提交的数据返回整个 html

javascript - JQuery 递归调用自身

PHP根据数组元素值对来自两个数组的值进行计算

mysql - 如何使用准备好的语句动态删除存储过程和函数 (MySQL) -- DROP PROCEDURE LIKE

PHP MySQL 未定义索引等错误

MySQL更新来自另一个表中最新字段的字段

apache - AWS ALB 重定向到 https