Transmittal服务的邮件提醒功能非常强大,但在应用中发现一旦邮件提醒功能在一段时间出现问题,等提醒功能恢复后,以前尚未发出的邮件会集中发送。这个可以理解,但有时用户往往希望在出问题时间段的邮件不用发送了,该如何解决呢?
答案是从数据库入手,邮件的发送会放在一个队列中,该队列本质上存于数据库表中,我们清空该表或设置某些记录的状态即可解决重复发送问题。
trs_notification_subscribers表中的reminder_status为邮件的发送状态,当把reminder_status设为6则对应的邮件状态为“发送完成”从而不会再次发送。
如果要修改某个时间段内的reminder_status则需要联合trs_notification_reminders表进行:
DECLARE @thresholdDate DateTime
SET @thresholdDate = '2016-09-01'
UPDATE receivers
SET
receivers.reminder_status = 6 -- 6 means compleated
FROM
dbo.trs_notification_subscribers receivers
INNER JOIN dbo.trs_notification_reminders reminders ON receivers.reminder_id = reminders.id
WHERE
(reminders.reminder_date <= @thresholdDate)
AND
(receivers.reminder_status <> 6)