如何为 Delphi 中的 RDOMail.Find 构建 SQL 查询
How to construct an SQL query for RDOMail.Find in Delphi
我正在尝试使用 RDOMail.Find 检查电子邮件是否存在于 public 文件夹中(我在 Delphi 中编码)。
我遇到的问题是,我什至无法获得对 return 任何项目的最基本查询。例如,以下查询不会 return 任何结果,即使我知道文件夹中有电子邮件具有指定的主题:-
ExistingRDOItem := ExistingRDOFolderItems.Find('SELECT Subject FROM Folder WHERE Subject = ' + QuotedStr(NewRDOItem.Subject);
任何人都可以向我解释为什么我的查询不起作用/我需要做什么来修复它?
我显然想构造一个比这更复杂的查询,但我需要先掌握基础知识!
谢谢,
最新版本的 Outlook 不再索引 PR_SUBJECT
属性,您需要在 PR_NORMALIZED_SUBJECT
(即没有前缀的主题)上搜索。此外,您不需要传递 SELECT 子句和 WHERE 语句,只需搜索子句就足够了:
PR_NORMALIZED_SUBJECT = "http://schemas.microsoft.com/mapi/proptag/0x0E1D001F"
value = Application.ActiveExplorer.Selection(1).PropertyAccessor.GetProperty(PR_NORMALIZED_SUBJECT)
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Inbox = Session.GetDefaultFolder(olFolderInbox)
set Items = Inbox.Items
set item = Items.Find("""" & PR_NORMALIZED_SUBJECT & """ = '" & value & "'")
while Not (item Is Nothing)
Debug.Print item.Subject
set item = Items.FindNext
wend
我正在尝试使用 RDOMail.Find 检查电子邮件是否存在于 public 文件夹中(我在 Delphi 中编码)。
我遇到的问题是,我什至无法获得对 return 任何项目的最基本查询。例如,以下查询不会 return 任何结果,即使我知道文件夹中有电子邮件具有指定的主题:-
ExistingRDOItem := ExistingRDOFolderItems.Find('SELECT Subject FROM Folder WHERE Subject = ' + QuotedStr(NewRDOItem.Subject);
任何人都可以向我解释为什么我的查询不起作用/我需要做什么来修复它?
我显然想构造一个比这更复杂的查询,但我需要先掌握基础知识!
谢谢,
最新版本的 Outlook 不再索引 PR_SUBJECT
属性,您需要在 PR_NORMALIZED_SUBJECT
(即没有前缀的主题)上搜索。此外,您不需要传递 SELECT 子句和 WHERE 语句,只需搜索子句就足够了:
PR_NORMALIZED_SUBJECT = "http://schemas.microsoft.com/mapi/proptag/0x0E1D001F"
value = Application.ActiveExplorer.Selection(1).PropertyAccessor.GetProperty(PR_NORMALIZED_SUBJECT)
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Inbox = Session.GetDefaultFolder(olFolderInbox)
set Items = Inbox.Items
set item = Items.Find("""" & PR_NORMALIZED_SUBJECT & """ = '" & value & "'")
while Not (item Is Nothing)
Debug.Print item.Subject
set item = Items.FindNext
wend