【问题标题】:Mark email as read using imap protocol Tcpclient使用 imap 协议 Tcpclient 将电子邮件标记为已读
【发布时间】:2015-10-21 16:58:56
【问题描述】:
_imapSw.WriteLine("$ STATUS INBOX (unseen)");
_imapSw.WriteLine("$ SELECT INBOX");
_imapSw.Flush();

在获得未见过的电子邮件计数后。我想将电子邮件标记为已读。请告诉我将第一封电子邮件标记为已读的命令。 `

_imapSw.WriteLine("$ FETCH " + index + " (body[header.fields (from subject date)])"); _imapSw.WriteLine("$ FETCH " + index + " body[text]");`

我可以获取电子邮件标题和正文,但这不会将电子邮件标记为已读。

【问题讨论】:

  • 你能告诉我们更多你的代码吗?
  • public int MailUnreadCount() { _imapSw.WriteLine("$ STATUS INBOX (unseen)"); _imapSw.Flush(); string res = Response(); Console.WriteLine(res); Match m = Regex.Match(res, "[0-9]*[0-9]"); return Convert.ToInt32(m.ToString()); } public void SelectInbox() { _imapSw.WriteLine("$ SELECT INBOX"); _imapSw.Flush(); Response(); }i 需要 imap 命令来标记看到的标志
  • 请使用问题上的编辑链接添加更多信息

标签: c# email imap tcpclient


【解决方案1】:

选择收件箱时,您将获得第一封未读/未查看邮件的 ID。

* FLAGS (\Answered \Flagged \Deleted \Seen \Draft NonJunk $Junk Junk $MDNSent $F
orwarded)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft NonJunk $Junk Jun
k $MDNSent $Forwarded \*)] Flags permitted.
* 8421 EXISTS
* 0 RECENT
* OK [UNSEEN 3395] First unseen.
* OK [UIDVALIDITY 47932578432] UIDs valid
* OK [UIDNEXT 46214] Predicted next UID
* OK [HIGHESTMODSEQ 1377] Highest

然后可以使用store命令将其标记为已读:

_imapSw.WriteLine("$ STORE 3395 +flags \\seen");
_imapSw.Flush();

【讨论】:

  • 效果很好。我刚改成 \\seen.Thanks
  • 是的,你是对的。我现在已经在我的答案中修复了它。
猜你喜欢
  • 2014-10-09
  • 2017-12-15
  • 2013-02-25
  • 2012-09-30
  • 2016-11-16
  • 2023-02-01
  • 2011-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多