Exchange 2010上的奇怪行为搜索UID SEARCH CHARSET US-ASCII FROM

时间:2017-10-13 02:09:55

标签: imap mailkit

我真的花了很多时间搜索,但没有运气。 我的问题与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.

2 个答案:

答案 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服务器?