限制仅适用于某些收件人
Restrict only works for some recipients
我有一些代码可以保持收件箱干净。
进程:
- 手动将商城邮件从发件箱发送到收件箱。现在我的收件箱里有所有邮件要存档。
- 运行代码。
当我有一个 pop3/*pst-files
设置时,我使用了 Outlook 规则并有一些代码来 运行 收件箱中的所有规则。
将设置更改为 Exchange 时,出现了规则问题。
突然我有很多重复的规则,Outlook无法同步到服务器等
现在我有了一个简单有效的概念,规则如下所示:
@somedomain.dk|XYZ
规则说:将 @somedomain.dk
上的所有发件人 to/from 的电子邮件移至 Exchange 文件夹 XYZ
。
我 select 邮件要用这条线移动:
Set mItems = inbox.Items.Restrict(strQry)
iNo = mItems.count
查询(有效):
@SQL="urn:schemas:httpmail:displayto" like '%somedomain.dk%' OR
"urn:schemas:httpmail:fromemail" like '%somedomain.dk%'
我的收件箱中有 7 封邮件:从该域收到 4 封,向该域发送 3 封。当 运行ning 代码时,收集了 5 封邮件。在我发送的 3 封电子邮件中,1 封是我创建的,2 封是回复邮件。使用 Outlook Spy,我发现 MailItem.To 在我创建的邮件中包含姓名和电子邮件地址,但在回复时只包含姓名。
如何更改查询以便获得电子邮件地址?我在 Outlook Spy 中四处寻找,但迷路了。
Outlook 对象模型不允许您对收件人或附件创建子限制,即使 MAPI 这样做没有问题。
你有几个选择 -
- 修改收件人姓名以包括地址和姓名(To/CC/BCC 属性在根据收件人 table 内容保存邮件时由商店提供商自动重建。 OOM,再次,不会帮助你 -
Recipient.Name
是只读的
- 如果使用 Redemption (I am its author) is an option, its version of Items.
Find
and Items。Restrict
如果在查询中使用 Recipients/To/CC/BCC 属性,则对收件人 name/address/SMTP 地址创建子限制。
此解决方案满足我的需要:将电子邮件 to/from somecustomer.com 移动到客户文件夹。
电子邮件发件人:我发现 email.SenderEmailAddress 不能接收所有邮件。有些是 email.Sender.Address.
Email To: 一个小难题。 Email.To 找到一些,但前提是电子邮件地址写有姓名(名字姓氏 )。我发现smtp地址属性可以找到其余的
(Module header)
Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
'>> In procedure
(set objects etc...)
strFrom1 = email.SenderEmailAddress
strFrom2 = email.Sender.Address
strTo1 = email.To
If strTo1 <> "" Then
strTo2 = email.Recipients(1).PropertyAccessor.GetProperty(PR_SMTP_ADDRESS)
Else
strTo2 = ""
End If
(loop mails and rules...)
strDom = "*" & somedomain.com
'>> Test if mail is to/from somedomain.com
If strFrom2 Like strDom Or strTo1 Like strDom Or strTo2 Like strDom Then
(do stuff: Move, delete)
End If
(do the rest)
速度问题:一次处理一封邮件比使用限制要花一些时间但是:我没有找到在一个命令中移动多封邮件的方法,所以移动是一次完成的。
在我的测试中,移动 1-200 封邮件的时间没有差异。
我有一些代码可以保持收件箱干净。
进程:
- 手动将商城邮件从发件箱发送到收件箱。现在我的收件箱里有所有邮件要存档。
- 运行代码。
当我有一个 pop3/*pst-files
设置时,我使用了 Outlook 规则并有一些代码来 运行 收件箱中的所有规则。
将设置更改为 Exchange 时,出现了规则问题。
突然我有很多重复的规则,Outlook无法同步到服务器等
现在我有了一个简单有效的概念,规则如下所示:
@somedomain.dk|XYZ
规则说:将 @somedomain.dk
上的所有发件人 to/from 的电子邮件移至 Exchange 文件夹 XYZ
。
我 select 邮件要用这条线移动:
Set mItems = inbox.Items.Restrict(strQry)
iNo = mItems.count
查询(有效):
@SQL="urn:schemas:httpmail:displayto" like '%somedomain.dk%' OR
"urn:schemas:httpmail:fromemail" like '%somedomain.dk%'
我的收件箱中有 7 封邮件:从该域收到 4 封,向该域发送 3 封。当 运行ning 代码时,收集了 5 封邮件。在我发送的 3 封电子邮件中,1 封是我创建的,2 封是回复邮件。使用 Outlook Spy,我发现 MailItem.To 在我创建的邮件中包含姓名和电子邮件地址,但在回复时只包含姓名。
如何更改查询以便获得电子邮件地址?我在 Outlook Spy 中四处寻找,但迷路了。
Outlook 对象模型不允许您对收件人或附件创建子限制,即使 MAPI 这样做没有问题。
你有几个选择 -
- 修改收件人姓名以包括地址和姓名(To/CC/BCC 属性在根据收件人 table 内容保存邮件时由商店提供商自动重建。 OOM,再次,不会帮助你 -
Recipient.Name
是只读的 - 如果使用 Redemption (I am its author) is an option, its version of Items.
Find
and Items。Restrict
如果在查询中使用 Recipients/To/CC/BCC 属性,则对收件人 name/address/SMTP 地址创建子限制。
此解决方案满足我的需要:将电子邮件 to/from somecustomer.com 移动到客户文件夹。
电子邮件发件人:我发现 email.SenderEmailAddress 不能接收所有邮件。有些是 email.Sender.Address.
Email To: 一个小难题。 Email.To 找到一些,但前提是电子邮件地址写有姓名(名字姓氏
(Module header)
Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
'>> In procedure
(set objects etc...)
strFrom1 = email.SenderEmailAddress
strFrom2 = email.Sender.Address
strTo1 = email.To
If strTo1 <> "" Then
strTo2 = email.Recipients(1).PropertyAccessor.GetProperty(PR_SMTP_ADDRESS)
Else
strTo2 = ""
End If
(loop mails and rules...)
strDom = "*" & somedomain.com
'>> Test if mail is to/from somedomain.com
If strFrom2 Like strDom Or strTo1 Like strDom Or strTo2 Like strDom Then
(do stuff: Move, delete)
End If
(do the rest)
速度问题:一次处理一封邮件比使用限制要花一些时间但是:我没有找到在一个命令中移动多封邮件的方法,所以移动是一次完成的。
在我的测试中,移动 1-200 封邮件的时间没有差异。