- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当使用 MailKit 我的邮箱的收件箱发生邮件或更改时,即时通知的最佳方式是什么?
我一直在玩弄以下事件:ImapClient.Inbox.CountChanged;这似乎在使用 Exchange 服务器时效果最好,因为它们对 MessageArrived 事件根本没有反应。噗……
ImapClient.Inbox.MessagesArrived;这似乎适用于开源邮件服务器,例如 SquirrelMail,但不适用于 Exchange。
我想在新邮件到达邮箱时收到通知,如果有任何邮件被移动/删除,以及是否有任何邮件移动到此 imap 文件夹。当我的收件箱发生问题时,我应该采取哪种方法尽快收到事件?我想要两全其美。
什么是 ImapClient.Inbox.Subscribe();用于??
最佳答案
Subscribe
和 Unsubscribe
方法只是将文件夹(又名邮箱)标记为已订阅或未订阅 - 通常这仅由邮件客户端用来决定用户是否订阅想要查看默认文件夹列表中的文件夹。
CountChanged
事件在 MailKit 从 IMAP 服务器获得未标记的 "* # EXISTS"
行时发出,通常作为对命令的响应的一部分已发送。
MessagesArrived
事件在 CountChanged
事件之后立即发出,当且仅当新消息计数大于旧消息计数时。不幸的是,这是一个设计/命名很糟糕的事件,因为它可能会产生很大的误导。由于判断是否触发事件的逻辑只有有限的上下文(旧消息计数和新消息计数),因此无法准确判断是否触发该事件。
以下面的情况为例:
当您打开一个文件夹时,假设邮件数是 10。
现在您从文件夹中删除了一些消息(5 条?)...但是,在删除消息的同时,您收到了 2 条新消息。
当 expunge 命令完成时,IMAP 服务器回复 "* 7 EXISTS"
由于 7(新消息计数)小于 10(旧消息计数),MessagesArrived
事件不会被触发。
I want to be notified when new mails arrive to the mailbox, if any mails are moved/deleted, and if there any mails moved to this imap folder.
如果你想知道新消息何时到达,你需要监听 CountChanged
事件并做你自己的簿记以确定是否有新消息到达或者消息是否被移出/删除文件夹。
无法区分正在移动到文件夹的邮件和正在传送到文件夹的新邮件(除非您正在移动)。
Which approach should I take to get an event asap when something happens to my INBOX??
如果您的服务器支持 IDLE 扩展,您可能需要研究使用 ImapClient.Idle()
(或 IdleAsync()
)方法,因为 CountChanged
事件只会在它收到来自服务器的 "* # EXISTS"
响应时触发,而 IMAP 服务器只会将该响应作为命令响应的一部分发送来自客户端或如果客户端处于空闲模式。
如果您的服务器不支持 IDLE 扩展,您将需要使用 ImapClient.NoOp()
方法(这是一个不执行任何操作的虚拟命令)“ping”IMAP 服务器) 定期检查自上次发送命令以来是否有任何新消息到达。
有一个 ImapIdle sample在 MailKit 的 GitHub 存储库中查看如何使用它。
关于c# - 使用 Mailkit 获取收件箱更改通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30102685/
我有一个控制台应用程序,并且安装了mailkit软件包以用于消息传递目的。 我在测试mailkit smtp客户端的主要方法中有代码。我正在运行smtp4dev虚拟服务器,并且客户端代码是带有注释身份
我的问题: 相同的代码在一个实例中工作正常,但无法在项目的另一个实例中使用相同的用户名/密码进行身份验证。 我的代码: static NetworkCredential _emailLoginCred
我正在使用 MailKit 创建一个电子邮件管理系统。 我需要跟踪交付,但我只能找到 DeliveryStatusNotification 枚举,但无处应用。 我目前拥有的是: var message
我正在尝试使用 Gmail 帐户发送电子邮件。我可以用 yahoo 发送电子邮件,但是,由于某种未知原因,它不再工作了。我也发布了一个关于这个的问题,但没有回应。 在这种情况下,我试图连接到一个 gm
我正在向 alias@company.com 发送电子邮件,这是真实邮箱地址的别名。然后我使用 MailKit 连接到真实邮箱(假设为 realmailbox@company.com)并检索消息。当我
我正在使用名为:MailKit 的 IMAP4 客户端。 效果很好,但我不知道邮件是否有附件。 我试过: var summary = inbox.Fetch(MessageId,MessageSumm
我试图在 mailkit 中找到一个在 IMAP 中执行命令“执行追加”的方法,在 C# 中我会这样做: MailMessage mg = null; using (ImapClient cl = n
我正在尝试保存邮件中的附件 foreach(MimeKit.MimeEntity at message.Attachments) { at.WriteTo("nameFile"); } 文件已
有人知道 MailKit 是否支持阅读回执(阅读后回复消息)吗?我没有在网络上或 Stackoverflow 上找到任何东西。 最佳答案 已读回执(即当用户打开邮件时自动发送邮件)不是 MailKit
MailKit.Net.Imap 有 MoveTo(...)。但是如果我们移动消息,消息将获得新的 UniqueID(因为它在文件夹中是唯一的)。如何获取消息的新 UniqueID? 最佳答案 采用
当我尝试使用 MailKit SmtpClient 连接到我的 SMTP 服务器时出现异常。 但是 如果我使用 System.Net.Mail.SmtpClient,我的邮件已成功发送具有相同的参数!
在尝试打开邮件文件夹时,我们在客户端遇到了一些问题并且找不到它,因此我创建了以下方法来尽我所能找到邮件文件夹所在的文件夹 namespace 。 private FolderNamespace Fin
我有一个复杂的电子邮件模板,其中包含许多 div、section 和其他 HTML 元素。 HTML 模板引用了 CSS(已上传到服务器)。我正在使用以下代码通过 MailKit 发送 HTML 电子
我有一个复杂的电子邮件模板,其中包含许多 div、section 和其他 HTML 元素。 HTML 模板引用了 CSS(已上传到服务器)。我正在使用以下代码通过 MailKit 发送 HTML 电子
我正在为我的项目使用 Mailkit 库 (Imap)。 我可以轻松地通过 SmtpClient 发送新消息。 目前我正在研究如何回复特定邮件。是否可以向该回复邮件添加更多收件人? @jstedfas
这个问题在这里已经有了答案: Retrieve IMAP email based on date AND time? (1 个回答) 关闭 4 年前。 我正在构建一个 C# 函数来定期从本地电子邮件
我尝试使用 Mailkit 连接邮件服务器,但它永远加载在 ImapClient.connect 上。我没有反应,没有错误,也没有日志。 我使用 .NET Framework 4.5.1 c# Vis
当使用 MailKit 我的邮箱的收件箱发生邮件或更改时,即时通知的最佳方式是什么? 我一直在玩弄以下事件:ImapClient.Inbox.CountChanged;这似乎在使用 Exchange
在谷歌搜索没有结果后,我会问我的问题: Mailkit.UniqueId 是什么? 在结构的元数据中只是读取 Represents a unique identifier for messages i
我正在使用 MailKit 从 gmail 帐户读取邮件。效果很好。但是,我想获取消息状态,例如是否已读、未读、重要、已加星标等。MailKit 可以吗?我似乎找不到任何相关信息。 这是我的代码:
我是一名优秀的程序员,十分优秀!