我有一个网站,可以让一个用户允许另一个用户访问某些内容。我想要做的是,当他们的访问权限已被批准时,发送一封电子邮件给该用户。
每个访问项都在一个网格视图中,其中有一个可供用户单击的批准按钮。
问题是,我不希望10个电子邮件发送给用户,如果他们有10个审批完成。我只想发送一封电子邮件。
不知何故,这需要延迟电子邮件过程,并对其进行分组。
有没有人知道一种既好又简单的方法?
发布于 2011-08-04 10:35:22
这里有两种简单的方法:
不管你选择哪种方式,你都需要存储哪些电子邮件仍然需要以某种方式发送,我在这里真的不能给出太多建议,因为我不确定你设置的细节。
更新:由于您使用的是c#,因此您将拥有一个支持您的网站的数据库(例如Microsoft SQL Server),可能还会有一个供用户使用的表格。我假设它名为Users,有一个id列作为它的主键,一个email列记录该用户的当前电子邮件地址:
Emails表,其中包含id (主键)、user_id (表示用户表中用户条目的外键)和email_text (要发送的电子邮件的文本)列。Emails表中添加一条记录,其中D20指向Users表中的正确记录。1. Get 1 record from the `Emails` table, and its corresponding user entry, using something like:SELECT users.email, emails.email_text FROM users, emails WHERE user.id = email.user_id LIMIT 1; (我手头没有要测试的SQL server,所以可以根据需要调整语法)
2.根据您从数据库中拉取的信息发送邮件
3.从Emails表中删除记录
4.如果您有更多电子邮件要发送,请返回(sub)步骤1。
发布于 2011-08-04 10:33:29
您可以创建一个数据库,用于存储有关用户访问哪个项目的信息。
创建一个User表、一个Item表和一个在User和Item之间建立关系的中间表。
当某人将另一个项目的访问权限授予某个项目时,您可以查询数据库以了解此人之前是否已经访问过该项目,然后发送一封电子邮件!
只是一个想法..。也就是说,如果可以选择拥有数据库,否则...我得多想想..。让我知道!=)
发布于 2011-08-04 12:33:31
最简单的选择,只要很少的重构,就是:
- If you want to schedule it to send every 30 minutes, you will need to have a service or scheduled program created to do this. Best way to do it would be to use a service with a timer in it.
- If the emails are not that crucial, you can have it triggered by a queue. Like the example mentioned above; when you insert a new email record, check to see if there are 10, if there are, then send it out.
https://stackoverflow.com/questions/6935493
复制相似问题