如何在Gmail中“撤消发送”?

时间:2010-03-02 11:53:50

标签: vb.net gmail

如何在Vb中撤消发送,保存或删除,就像Gmail在消息中使用此功能一样。 Gmail使用的功能是将邮件排队5秒,如果用户在5秒之前点击撤消,则会撤回整个发送过程。

现在我想要的是在我的Vb.net应用程序中实现这一点。有没有可用的代码来执行此操作。请帮帮忙?

1 个答案:

答案 0 :(得分:13)

关于“撤消发送”功能,最明显的做法是实际上不“做”你想要“撤消”的内容。

我的意思是:

  • 当用户点击“发送”时,您不应该真正发送消息
  • 相反,您应将其标记为“在X秒内发送” - 将其放在某个队列中,例如
  • 这意味着它只会在X秒后发送,而不是立即发送。
  • 在此X秒数内,如果用户点击“撤消发送”,您只需从“等待队列”中删除该邮件

当然,你不能在已经发送的邮件上“撤消发送”:它已经从你的服务器上消失了,你无法再做任何事了。

要实现这一点,您需要:

  • 一些行动队列
  • 当用户点击“发送”
  • 时,将数据放入此队列
  • 让一些真正发送队列中数据超过X秒的批次
  • 当用户点击“撤消发送”时,从队列中删除数据。


同样的想法可以应用于“撤消删除”:

  • 当用户点击“删除”时,请不要以物理方式删除数据
  • 相反,请使用一些布尔标志来表示它应被视为已删除
  • 然后,取消使用该删除只意味着取消激活该标志

这可以用任何语言轻松实现:

  • 在数据上添加is_deleted字段
  • 显示数据时,过滤那些已启用此标记的数据
  • 删除时,不设置物理删除,设置此标志
  • 取消删除时,取消设置此标记


“撤消保存”可能有点困难:解决方案是不仅保留一个版本的消息,而是几个:

  • 每次用户点击“保存”时,您都应该存储新版本的消息
  • 这意味着,经过一段时间后,您将会收到许多版本的消息
  • 这将允许您“返回”以前的版本,从历史记录中恢复它。

可以这样做:

  • 在您的数据上添加名为“version”的新字段。
  • 每次用户保存时,只需增加该字段,并存储数据副本
  • 即。从不实际更新任何现有数据,但始终插入新版本。
  • 然后,“撤消保存”仅表示“获取以前版本的数据”