【问题标题】:How to suppress read receipt via IMAP?如何通过 IMAP 抑制已读回执?
【发布时间】:2014-07-07 09:48:24
【问题描述】:

我想在我的应用程序中实现一个用于发送电子邮件已读回执的确认对话框。该应用程序使用 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

那么,如果用户不想发送已读回执消息,如何显式抑制?

【问题讨论】:

  • 这是非标准 IMAP 行为。
  • 我猜你的意思是在这些情况下自动发送已读回执是不标准的。那么这对我意味着什么?有没有办法规避这种行为?请注意,我无权访问服务器配置。
  • 大概不会。看起来 Exchange 已将挂钩直接放入服务器部分(通常已读回执是客户端生成的)。也许他们有一个协议扩展来定制它,但我不知道。
  • 非常特别的是,当 Exchange Server 标记为已读时,会发送此收据,但仅在使用 Thunderbird 时发送,而不是在同一个收件箱上与另一个 IMAP 客户端(如 K9Mail)一起发送。 Thunderbird 用户有哪些选择(没有服务器管理员权限)?

标签: exchange-server imap


【解决方案1】:

解决此问题的唯一方法是更改​​ Exchange 服务器本身的设置。从Exchange Management Shell,输入以下命令:

set-ImapSettings -SuppressReadReceipt $true

对于通过 IMAP 阅读的邮件,您将不会从 Exchange 获得任何已读回执。然后由您的应用程序自行生成已读回执。

Technet 也有more detailed info about set-ImapSettings

【讨论】:

  • 谢谢,这有帮助。所以我需要联系运行服务器的人员来更改设置。
【解决方案2】:

Exchange Server 2016 也有同样的问题。 在邮箱中我设置了不发送已读回执,但 Thunderbird 还是这样做了。

您可以禁止某个邮箱的已读回执,而不是所有 IMAP 服务:

Set-CASMailbox mailboxname -ImapSuppressReadReceipt $true -ImapUseProtocolDefaults $false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-03
    • 2016-01-17
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多