我真的花了很多时间搜索,但没有运气。 我的问题与Mailkit的工作没有直接关系,它做得对,但也许有人在这里有一个线索。 我必须使用IMAP在Exchange 2010上查找来自特定邮件地址的邮件看不见的邮件。对于除此之外的任何服务器,一切正常(直到现在)。
&#34;来自&#34; John Doe <johndoe@pluto.com>
格式的邮件地址搜索johndoe@pluto.com
不会返回任何UID;
John Doe
返回UID集合;
另一方面,如果&#34;来自&#34;邮件是普通格式,一切正常。
有没有人知道或知道它是否是Exch2010的一个问题?
作为一项解决方案,我想做一个看不见的简单搜索来获取UID,然后获取并查看Envelope
顺便说一下,当来自= John Doe <johndoe@pluto.com>
;
C: A00000006 UID SEARCH CHARSET US-ASCII FROM johndoe@pluto.com
S: * SEARCH
S: A00000006 OK SEARCH completed.
答案 0 :(得分:1)
大约1年后,似乎我发现了为什么当邮件地址显示名称时,搜索“发件人”时无法得到任何结果的原因。
Dmitry在这里说明交换行为 https://blogs.technet.microsoft.com/dkhrebin/2013/10/04/how-exchange-imap-search-in-message-header/
一个简短的报价说:
如果您使用SEARCH FROM(对于CC,BCC,TO相同),Exchange将搜索邮件的属性:PR_SENT_REPRESENTING_NAME,PR_SENT_REPRESENTING_NAME_A, ptagSentRepresentingName PR_SENT_REPRESENTING_NAME属性包含发件人代表的邮件用户的显示名称。
因此,除了:SearchQuery.FromContains ("johndoe@pluto.com").Or (SearchQuery.FromContains ("John Doe"));
我可以使用SearchQuery.HeaderContains ("from", "johndoe@pluto.com");
因为显示名称可以是任何名称,并且可以随时更改,并且邮件地址始终相同。我可以在上面处理这两个命令。
但是我无法确定哪个具有最佳性能。
答案 1 :(得分:0)
我注意到每个IMAP服务器在搜索电子邮件地址和/或Message-Id令牌方面的行为似乎都不同。
您可能需要做的是进行OR搜索查询:
SearchQuery.FromContains ("johndoe@pluto.com").Or (SearchQuery.FromContains ("John Doe"));
也许这会解决问题所以它适用于所有IMAP服务器?