我想实现一个确认对话框,用于在我的应用程序中发送电子邮件已读回执。该应用程序使用IMAP与邮件服务器进行通信,该邮件服务器目前仅限于Microsoft Exchange Server 2010。
当发送\Seen
标志时,收据显然是由服务器自动发送的。因此,IMAP命令如下所示:
c1 LOGIN username password
c2 SELECT mailbox
c3 UID STORE 123 flags \Seen
(顺便说一句,这与another stackoverflow question中找到的解决方案形成对比,后者表示设置
\Seen
标志不会导致Exchange Server发送收据。)虽然如何处理用户而不是要发送已读回执的情况?
我最初的想法只是不设置
\Seen
标志。尽管这会导致服务器自动向发件人发送一条通知,通知您该电子邮件已被删除而不被读取,以防从服务器中删除该邮件。在删除之前,还用
\Deleted
和\Seen
标记消息无济于事:c1 UID STORE 123 flags (\Deleted \Seen)
c1 UID EXPUNGE 123
因此,如果用户不想发送已读回执消息,该如何显式取消它呢?
最佳答案
解决此问题的唯一方法是更改Exchange服务器本身的设置。在Exchange Management Shell中,输入以下命令:
set-ImapSettings -SuppressReadReceipt $true
然后,对于通过IMAP读取的邮件,您将根本不会从Exchange获得任何已读取的回执。然后由您的应用程序自行生成已读回执。
Technet也有more detailed info about
set-ImapSettings
。