要从收件箱中过滤发送给另一个收件人的邮件?
To filter mails from inbox which are sent to another recipient?
在 Outlook Interop 中,
using Outlook = Microsoft.Office.Interop.Outlook;
要过滤未读电子邮件,我使用以下代码
Outlook.Application oApp = new Outlook.Application();
Outlook.NameSpace outlookNameSpace = oApp.Application.GetNamespace("MAPI");
Outlook.MAPIFolder inbox = outlookNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
Outlook.Items items = inbox.Items.Restrict("[Unread]=true");
同样,有没有办法过滤发送给除我以外的特定收件人的邮件。
例如,过滤发送至 abc@example.com
的邮件。
我的邮件 ID 也会出现在“收件人”或“抄送”中的那些邮件中。我会更乐意找到 Outlook 互操作的可能方法。
您可以使用如下所示的搜索查询在 PR_DISPLAY_TO
MAPI 属性 上搜索匹配项(将 0x0E04001F
替换为 0x0E03001F
for PR_DISPLAY_CC
)
@SQL="http://schemas.microsoft.com/mapi/proptag/0x0E04001F" LIKE '%abc@example.com%'
但是请记住,PR_DISPLAY_TO
/ PR_DISPLAY_CC
可能包含也可能不包含电子邮件地址;它们可以只包含显示名称。
在扩展 MAPI 级别(C++ 或 Delphi),您可以创建对收件人的限制 (RES_SUBRESTRICTION
/ PR_MESSAGE_RECIPIENTS
)。
如果使用 Redemption (I am its author - any language) is an option, you can use RDOFolder.Items.Restrict - 与 Outlook 对象模型不同,它确实将 To/CC/BCC 查询扩展到每个收件人的 PR_DISPLAY_NAME
和 PR_EMAIL_ADDRESS
属性的收件人子限制中(RES_SUBRESTRICTION
/ PR_MESSAGE_RECIPIENTS
/ RES_OR
/ PR_DISPLAY_NAME
| PR_EMAIL_ADDRESS
).
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Folder = Session.GetFolderFromID(Application.ActiveExplorer.CurrentFolder.EntryID)
set restrItems = Folder.Items.Restrict(" TO = 'abc@example.com' ")
您还可以在查询中指定 Recipients
属性 - 它将匹配所有类型的收件人 (to/cc/bcc):
set restrItems = Folder.Items.Restrict(" Recipients = 'abc@example.com' ")
在 Outlook Interop 中,
using Outlook = Microsoft.Office.Interop.Outlook;
要过滤未读电子邮件,我使用以下代码
Outlook.Application oApp = new Outlook.Application();
Outlook.NameSpace outlookNameSpace = oApp.Application.GetNamespace("MAPI");
Outlook.MAPIFolder inbox = outlookNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
Outlook.Items items = inbox.Items.Restrict("[Unread]=true");
同样,有没有办法过滤发送给除我以外的特定收件人的邮件。
例如,过滤发送至 abc@example.com
的邮件。
我的邮件 ID 也会出现在“收件人”或“抄送”中的那些邮件中。我会更乐意找到 Outlook 互操作的可能方法。
您可以使用如下所示的搜索查询在 PR_DISPLAY_TO
MAPI 属性 上搜索匹配项(将 0x0E04001F
替换为 0x0E03001F
for PR_DISPLAY_CC
)
@SQL="http://schemas.microsoft.com/mapi/proptag/0x0E04001F" LIKE '%abc@example.com%'
但是请记住,PR_DISPLAY_TO
/ PR_DISPLAY_CC
可能包含也可能不包含电子邮件地址;它们可以只包含显示名称。
在扩展 MAPI 级别(C++ 或 Delphi),您可以创建对收件人的限制 (RES_SUBRESTRICTION
/ PR_MESSAGE_RECIPIENTS
)。
如果使用 Redemption (I am its author - any language) is an option, you can use RDOFolder.Items.Restrict - 与 Outlook 对象模型不同,它确实将 To/CC/BCC 查询扩展到每个收件人的 PR_DISPLAY_NAME
和 PR_EMAIL_ADDRESS
属性的收件人子限制中(RES_SUBRESTRICTION
/ PR_MESSAGE_RECIPIENTS
/ RES_OR
/ PR_DISPLAY_NAME
| PR_EMAIL_ADDRESS
).
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Folder = Session.GetFolderFromID(Application.ActiveExplorer.CurrentFolder.EntryID)
set restrItems = Folder.Items.Restrict(" TO = 'abc@example.com' ")
您还可以在查询中指定 Recipients
属性 - 它将匹配所有类型的收件人 (to/cc/bcc):
set restrItems = Folder.Items.Restrict(" Recipients = 'abc@example.com' ")