如何为 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