我需要向400个客户发送自定义电子邮件。
我正在这样做:

for (Client c : clients){
  setUpEmail(c);
  sendMail(c);
}

我的问题是我的电子邮件提供商授权我每分钟仅发送10封电子邮件。我该如何在循环中做到这一点?
谢谢。

最佳答案

使用番石榴的 RateLimiter

如果您的库路径中已有番石榴,或者您有兴趣添加番石榴,则可以使用以下解决方案:

RateLimiter rateLimiter = RateLimiter.create(10/60d); // 10 permits per 60 seconds.
for (Client c : clients){
  setUpEmail(c);
  rateLimiter.acquire(1);
  sendMail(c);
}

您的问题恰恰就是创建RateLimiter的原因。

09-10 06:00