9

对于我们的产品,我们需要能够为收件人安排电子邮件。我们的产品还希望确保收件人不会收到过多的垃圾邮件。因此,我们正在寻找一种 API,它允许我们的产品将消息调度到 API,如果 API 发现在同一时间安排了多个消息,那么它会以一种相当智能的方式将它们组合起来。

例如,产品通过以下请求调用 API:

  • 收件人:test@test.com,标题:“您需要批准请求 123”消息:“XYZ”,时间表:下午 2 点
  • 发送至:test@test.com,标题:“您对 234 的请求已获批准”消息:“PQR”,时间表:下午 2 点

下午 2 点,test@test.com 收到以下信息:

  • 标题:“来自产品的消息”
  • 消息:<来自上述两个标题和消息的组合消息>

除了这一要求外,MailGun 似乎符合我们的一般要求。有解决这个问题的API吗?如果没有,其他人如何解决?

4

2 回答 2

2

您可以创建一个包含两个表的简单数据库,“recipient”(姓名、电子邮件地址)和“message”(date_created、正文……)。收件人与消息的关系显然是 1:n。

然后你设置了一个 cron 作业,收集所有早于 5 小时的消息;按收件人对它们进行分组,将邮件包装到一个漂亮的模板中并将它们传递给 MTA。

顺便说一句,我个人认为在短时间内发送几封电子邮件是可以接受的——因为每封电子邮件都是有意义且独立的。尝试减少电子邮件流量非常好,但在大多数情况下,人们不会介意,他们会欣赏即时通知。

于 2014-08-05T23:10:33.063 回答
0

I doubt that you will find any API/library with this functionality.

Combining messages "in a reasonably intelligent manner" will prove to be virtually impossible for a library knowing absolutely nothing about the nature of the content.

Using mailgun for sending mail is a very robust option - the throttling you mention is something you will have to add yourself.

If the messages are being pumped out at any rate you will need to introduce a waiting period to see if another message is coming. Knowing nothing about the rate of messages you will have to introduce delays if you have just sent a message (after waiting) when a new arrives.

If the system schedules messages for sending - eg. sending status messages at night/morning to users it might be a better approach to combine the messages before they are turned into actual e-mails.

于 2014-06-09T06:15:45.060 回答