如何测试发送数千封电子邮件

How To Test Sending Thousands Of Emails

我正在开发一个应用程序,该应用程序将使用 Amazon SES 基于 CSV 文件每天发送数千封电子邮件。

我的客户希望一次发送大约 50,000 个。

该应用程序即将完成,但我想用数千封电子邮件对其进行测试。如果我第一次尝试使用实时数据时它不起作用,那真是太可惜了。

现在我只使用我的 CSV 文件中的大约 10 封电子邮件对其进行了测试。

有谁知道可以测试发送大约 10,000 封电子邮件的方法吗?显然我不能使用真实数据。

我假设您没有进行完整的端到端测试(包括检查以确保收到电子邮件),而只是对您的应用程序逻辑执行功能测试。

如果是这样,

  1. 将您的应用程序指向测试电子邮件服务器并 disable outbound email for all queues。您也可以在生产服务器上执行此操作,我猜是 3:00 上午,但要小心!

  2. 运行 申请

  3. 检查电子邮件服务器的发件箱并计算已排队的邮件数。

  4. 如果计数匹配,则您的测试已通过。

  5. 不要忘记在重新打开之前清除队列!

我相信你可以使用真实的数据。例如,要测试 10,000 封电子邮件,您可以执行以下操作(假设您已经 increased your SES sending limits):

  1. 在 CSV 文件中为您已经管理的目标域生成 10,000 个电子邮件收件人。这 10,000 个电子邮件地址应该是随机的并且不存在(例如,1eed1417-cc2c-4f7c-8ddb-7e0dfbcacb31@mydomain.com)。
  2. 为 mydomain.com 配置一个万能电子邮件地址(例如 catch-all@mydomain.com)以接收发送到任何不存在地址的电子邮件。
  3. 将 SES SMTP 服务器添加到 mydomain.com 的受信任 senders/addresses 并确保您的邮件服务器的限制规则允许此发送量。
  4. 在非高峰时段进行测试,并检查您的万能邮箱的收件箱。

我最后做的是使用 https://mailtrap.io/

我发送了 25 封电子邮件。然后向这 25 封电子邮件中的每封邮件发送 600 封电子邮件。那等于 15,000。

我没有使用 action mailer 发送邮件。我使用了 Amazon SES 发送电子邮件方法

  def send_email!
    client.send_email(email_attributes)
  end

  private

  def client
    Aws::SES::Client.new(region: Rails.application.secrets.ses_region,
                         access_key_id: Rails.application.secrets.aws_access_key_id,
                         secret_access_key: Rails.application.secrets.aws_secret_access_key)
  end

使用 Kabana 跟踪电子邮件。如果他们退回、送达等等。

SES 不会跟踪电子邮件打开情况,因此我们有一个小型 Node-JS 应用程序可以跟踪打开情况和可点击链接。

该应用程序在 20 分钟内发送了大约 15000 封电子邮件。