为什么 (Outlook vba api) AdvancedSearch 在搜索发送给某人的电子邮件时返回错误的电子邮件结果?

问题描述

大家好,感谢大家的支持

请问,有人知道如何同时获取电子邮件是“something@emailprovider.com”和“姓名”的两种情况吗?

我正在使用以下过滤器

; email Search Parameters
lookForRecipient            := ReceiverEmail
strQuery                    := "urn:schemas:httpmail:displayto like '%" lookForRecipient "%'"
emailScopeFolder            := "\\myemail@outlook.com\inBox\myFolder\mysubFolder"
searchSubfolders            := True
searchObject := this.outlook.AdvancedSearch(emailScopeFolder,strQuery,searchSubfolders)

; Wait until Outlook's AdvancedSearch returns AdvancedSearchComplete
oSearchEvents           := new SearchEvents
ComObjConnect(this.outlook,oSearchEvents)
    while (!oSearchEvents.SearchComplete) {
        ToolTip,% "Wait. Search in progress"
    }   

; Get final results. Sort the results by time received time,selecting the newest (latest) one
searchResults := searchObject.Results
countResults := searchResults.Count()
searchResults.sort("[ReceivedTime]",true)
latestSentEmail := searchResults.GetFirst()

Obs,在代码的其他地方,我定义了 SearchEVents 类

class SearchEvents
{
    AdvancedSearchComplete(searchObject)
    {
        ToolTip,% "Wait. SearchEvents.AdvancedSearchComplete() is in progress"
        Sleep,200
        this.SearchComplete := true
    }
}

它可以找到最新发送的电子邮件。 但并非总是如此。

如果电子邮件“ReceiverEmail”类似于“abc@hotmail.com”

这会被发现

enter image description here

但这不会被发现

enter image description here

因此,使用 displayTo 作为命名空间,只有当电子邮件确实出现在“收件人”字段中时,它才会找到电子邮件。如果不是电子邮件而是“名称”,则找不到电子邮件

如何在“收件人”字段中搜索

Obs:我尝试了以下选项但没有成功。

enter image description here

或者,以文本格式,

;strQuery                    := "urn:schemas:httpmail:displayto like '%" lookForRecipient "%'" ; WORKS,but only if ToField is something@emailprovider.com
;strQuery                    := "urn:schemas:httpmail:to like '%" lookForRecipient "%'" ; no result
;strQuery                    := "urn:schemas:httpmail:namespace:to like '%" lookForRecipient "%'" ; no result
;strQuery                    := "urn:schemas:httpmail:reply-to like '%" lookForRecipient "%'" ; no result
;strQuery                    := "urn:schemas:httpmail:reply_to like '%" lookForRecipient "%'" ; no result
;strQuery                    := "urn:schemas:httpmail:reply_by like '%" lookForRecipient "%'" ; no result
;strQuery                    := "urn:schemas:httpmail:reply-by like '%" lookForRecipient "%'" ; error

;strQuery                    := "urn:schemas:mailheader:to like '%" lookForRecipient "%'" ; no result
;strQuery                    := "urn:schemas:mailheader:in-reply-to like '%" lookForRecipient "%'" ; no result
;strQuery                    := "urn:schemas:mailheader:reply-to like '%" lookForRecipient "%'" ; no result

strQuery                    := "urn:schemas:mailheader:return-receipt-to like '%" lookForRecipient "%'" ; no result

请问,有人知道如何同时获取电子邮件是“something@emailprovider.com”和“姓名”的两种情况吗?

非常感谢!

================================ @尼顿

我已尝试将 Items.Restrict(strFiler) 作为您发送的链接但没有成功。

subBoxMail                  := 

this.mailBox.Folders(this.emailBox).Folders(this.emailSubBox)
    
strFilter                   := "@sql=" Chr(34) "http://schemas.microsoft.com/mapi/proptag/0x0076001E" Chr(34) " like '%" lookForRecipient "%'"



restrictResults             := subBoxMailItems.Restrict(strFilter)
                restrictResultsCount        := restrictResults.Count

                msgBox,% "searchedSubFolderCount = " searchedSubFolderCount "`n`n strFilter = " strFilter "`n`n restrictResultsCount = " restrictResultsCount

消息框返回 searchSubfolderCount = 2000+(文件夹中电子邮件的确切数量) 但 限制结果计数 = 0

enter image description here

Obs,如果我使用双引号 (") 两次,则会引发错误

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)