1

为电子邮件列表数据库存储已发送电子邮件的有效方法是什么?我很难弄清楚。

现在,为了简化我有这样的事情:

Lists:
ID,
Name

Subscribers:
ID
Email
Name

ListSubscribers:
ID
SubscriberID
ListID

Messages:
ID
Title
Content
ListID

到目前为止一切都很好......问题是弄清楚什么是存储已发送和要发送的电子邮件以及电子邮件发送状态的有效方法。

例如,我可能有数百个列表,每个列表都有数万订阅者。要知道每封邮件的状态,我必须存储每封邮件的详细信息:

MessageStatus:
ID
MessageID
SubscriberID
Status (processing, sent, soft bounce, hard bounce)

凭借少数列表和数十万订阅者,这可以在短短几天内激增至数百万条消息。

有没有更有效的方法来做到这一点?

4

2 回答 2

1
  • 列表(表):ListID(PK),ListName

  • 订阅者(表):订阅者 ID(PK)、列表 ID(FK)、名字、姓氏、电子邮件地址

  • 电子邮件(表):EmailID(PK)、ListID(FK)、主题、内容、SendDate

于 2013-01-09T21:47:01.603 回答
1

既然你在问这个问题,我会假设桌子占用的空间量MessageStatus对你来说是个问题。然而,你应该挑战这个假设。

鉴于您需要管理 的空间MessageStatus,您可以从工作列表而不是审核日志的角度进行操作- 当然,除非您出于某种原因需要拥有审核日志。

为此,请MessageStatus按照定义的方式使用表,但当记录进入“SENT”状态时,删除它而不是更新它。这样,您只拥有与尚未发送的电子邮件一样多的记录。

于 2013-01-10T13:04:52.810 回答