Server MailKit搜索查询问题

Server MailKit搜索查询问题,server,imap,mailkit,Server,Imap,Mailkit,我使用MailKit和IMAP客户端。GMail邮件没有问题,但当我向另一台服务器发出相同的请求时,问题就出现了。 即使使用标准MailKit.Search.SearchQuery.NotSeen进行简单搜索也不起作用。我可以访问邮箱并读取邮件,但过滤器不起作用。 唯一有效的过滤器是MailKit.Search.SearchQuery.All。此外,我无法使用Inbox.AddFlags将标记从NotSeen更改为Seen,它仅适用于GMail。 当我对MessageSummaryItems.B

我使用MailKit和IMAP客户端。GMail邮件没有问题,但当我向另一台服务器发出相同的请求时,问题就出现了。 即使使用标准MailKit.Search.SearchQuery.NotSeen进行简单搜索也不起作用。我可以访问邮箱并读取邮件,但过滤器不起作用。 唯一有效的过滤器是MailKit.Search.SearchQuery.All。此外,我无法使用Inbox.AddFlags将标记从NotSeen更改为Seen,它仅适用于GMail。 当我对MessageSummaryItems.BodyStructure使用Fetch方法时,它返回TextBody=null。 它是否只适用于GMail,或者我必须修复一些服务器设置

IMAP.log:

Connected to imaps://mail.totalware.gr:993/
S: * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE NAMESPACE LITERAL+ AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
C: A00000000 AUTHENTICATE PLAIN AGZvc3Rpcm9wb3Vsb3NAdG90YWx3YXJlLmdyAEAhZm9zdGlyb3BvdWxvc0Ah
S: A00000000 OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY PREVIEW=FUZZY STATUS=SIZE NAMESPACE LITERAL+ NOTIFY SPECIAL-USE COMPRESS=DEFLATE QUOTA] Logged in
C: A00000001 NAMESPACE
S: * NAMESPACE (("INBOX." ".")) NIL NIL
S: A00000001 OK Namespace completed (0.001 + 0.000 secs).
C: A00000002 LIST "" "INBOX" RETURN (SUBSCRIBED CHILDREN)
S: * LIST (\HasChildren) "." INBOX
S: A00000002 OK List completed (0.017 + 0.000 + 0.016 secs).
C: A00000003 LIST (SPECIAL-USE) "" "*" RETURN (SUBSCRIBED CHILDREN)
S: * LIST (\HasNoChildren \Archive) "." INBOX.Archive
S: * LIST (\Subscribed \HasNoChildren \Junk) "." INBOX.spam
S: * LIST (\Subscribed \HasNoChildren \UnMarked \Trash) "." INBOX.Trash
S: * LIST (\Subscribed \HasNoChildren \UnMarked \Sent) "." INBOX.Sent
S: * LIST (\Subscribed \HasNoChildren \Drafts) "." INBOX.Drafts
S: A00000003 OK List completed (0.001 + 0.000 secs).
C: A00000004 SELECT INBOX (CONDSTORE)
S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
S: * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
S: * 21 EXISTS
S: * 0 RECENT
S: * OK [UIDVALIDITY 1513154986] UIDs valid
S: * OK [UIDNEXT 1634] Predicted next UID
S: * OK [HIGHESTMODSEQ 3293] Highest
S: A00000004 OK [READ-WRITE] Select completed (0.002 + 0.000 + 0.001 secs).
C: A00000005 UID SEARCH RETURN () UNSEEN
S: * ESEARCH (TAG "A00000005") UID
S: A00000005 OK Search completed (0.001 + 0.000 secs).
C: A00000006 LOGOUT
S: * BYE Logging out
S: A00000006 OK Logout completed (0.001 + 0.000 secs).

根据日志,MailKit的
搜索(SearchQuery.Unseed)
没有返回结果的原因是您的IMAP服务器返回0个匹配项


事实证明,某些IMAP服务器没有正确实现rfc4731。也就是说,它们不会将
RETURN()
视为等同于
RETURN(ALL)
。MailKit 2.11.1将更加明确,并使用
RETURN(ALL)
来解决此问题。

根据日志,MailKit的
搜索(SearchQuery.Unseed)
不返回结果的原因是您的IMAP服务器返回0个匹配项


事实证明,某些IMAP服务器没有正确实现rfc4731。也就是说,它们不会将
RETURN()
视为等同于
RETURN(ALL)
。MailKit 2.11.1将更加明确,并使用
RETURN(ALL)
解决此问题。

发送了哪些命令以及服务器的响应是什么?您真的使用了正确的邮箱吗?服务器运行的是什么软件?有些服务器的
SEARCH
实现非常糟糕,尽管我希望它们至少支持
UNSEEN
我很惊讶UNSEEN不起作用。如果这是标题或正文的字符串匹配条件的问题,那我一点也不会感到惊讶。Inbox.AddFlags()工作不正常表明他使用的是只读邮箱(或使用了“检查”而不是“选择”。@Tasos请粘贴IMAP协议日志,以便我们找出问题所在。要获取日志,可以使用
新建imap客户端(new ProtocolLogger(“imap.log”))
使imap客户端将imap协议请求和响应保存到名为“imap.log”的文件中。结果表明,某些imap服务器没有正确实现rfc4731。也就是说,它们不会将
RETURN()
视为等同于
RETURN(ALL)
。MailKit 2.11.1将更加明确,并使用
RETURN(ALL)
解决此问题。发送了哪些命令以及服务器的响应是什么?您真的使用了正确的邮箱吗?服务器运行的是什么软件?有些服务器的
SEARCH
实现非常糟糕,尽管我希望它们至少支持
UNSEEN
我很惊讶UNSEEN不起作用。如果这是标题或正文的字符串匹配条件的问题,那我一点也不会感到惊讶。Inbox.AddFlags()工作不正常表明他使用的是只读邮箱(或使用了“检查”而不是“选择”。@Tasos请粘贴IMAP协议日志,以便我们找出问题所在。要获取日志,可以使用
新建imap客户端(new ProtocolLogger(“imap.log”))
使imap客户端将imap协议请求和响应保存到名为“imap.log”的文件中。结果表明,某些imap服务器没有正确实现rfc4731。也就是说,它们不会将
RETURN()
视为等同于
RETURN(ALL)
。MailKit 2.11.1将更加明确,并使用
RETURN(ALL)
解决此问题。