删除电子邮件主题中的 [External] 标签,之后无法按主题排序

Posted

技术标签:

【中文标题】删除电子邮件主题中的 [External] 标签,之后无法按主题排序【英文标题】:Removing [External] Tag in Email Subject, Unable to Sort by Subject After 【发布时间】:2020-09-08 21:39:26 【问题描述】:

我编写了一个宏(在此站点的帮助下!),它搜索我的收件箱并从电子邮件主题中删除 [外部] 标记。当我运行它时,它似乎正在工作,因为我可以看到它实时删除了标签。然后我会自己回复电子邮件并密件抄送。问题是,当我按主题排序时,Outlook 会将我所有的密件抄送电子邮件与外部电子邮件分开,就好像它们的主题不同(即使它们在 Outlook 中看起来相同)。

因此,我检查了密件抄送电子邮件和已在其上运行宏的外部电子邮件的来源。密件抄送电子邮件的来源显示了我所期望的主题,没有 [External] 标记。外部电子邮件的来源显示带有 [External] 标记的原始电子邮件(即使 Outlook 的 GUI 显示主题没有 [External] 标记)。再往下,密件抄送电子邮件的来源显示我回复的电子邮件(原始电子邮件)在主题中有 [External],就好像它从未被删除一样。

这就像 [External] 删除只对我的关于排序的回复起作用。关于这里发生了什么的任何想法?为什么 Outlook 显示已更改的主题,但实际上并未更改源?有什么意义?

宏代码sn-p:

If InStr(1, myitem.Subject, "[External] ") > 0 Then
            myitem.Subject = Replace(myitem.Subject, "[External] ", "")
            myitem.Save

运行宏后的 Outlook GUI 视图:

FROM                SUBJECT
Me                  RE: Test Email
Original Sender     RE: Test Email

密送电子邮件回复主题来源:

<br><b>Subject:</b> RE: Test Email
(Bcc reply email body)
<br><b>Subject:</b> RE: [External] RE: RE: Test Email
(Original email body)

原始外部电子邮件主题来源:

<br><b>Subject:</b> RE: [External] RE: RE: Test Email
(Original email body)

【问题讨论】:

【参考方案1】:

Outlook 对 PR_CONVERSATION_INDEX MAPI 属性(DASL 名称 http://schemas.microsoft.com/mapi/proptag/0x00710102)进行排序/分组。尝试保留它 - 在重置 Subject 属性之前读取它 (MailItem.PropertyAccessor.GetProperty),然后再将其设置回来 (MailItem.PropertyAccessor.SetProperty)。

【讨论】:

谢谢@Dmitry 的回复。我尝试添加这个(下面的代码),但它在运行后仍然没有按主题正确排序。作为参考,我今天测试了它。在运行代码之前,它们排序良好,但在代码运行后不再排序。我执行不正确吗? mapiSpot = "http://schemas.microsoft.com/mapi/proptag/0x00710102" convIndex = myitem.PropertyAccessor.GetProperty(mapiSpot) myitem.Subject = Replace(myitem.Subject, "[EXTERNAL] ", "", [vbTextCompare]) myitem.Save myitem.PropertyAccessor.SetProperty mapiSpot, convIndex 您在调用 save 之后 设置了 PR_CONVERSATION_INDEX MAPI 属性。您的更改不会持续。 我当然是订购错误。我改变了它,做了一些测试,它似乎仍然打破了主题排序。有任何想法吗? mapiSpot = "http://schemas.microsoft.com/mapi/proptag/0x00710102" convIndex = myitem.PropertyAccessor.GetProperty(mapiSpot) myitem.Subject = Replace(myitem.Subject, "[EXTERNAL] ", "", [vbTextCompare]) myitem.PropertyAccessor.SetProperty mapiSpot, convIndex myitem.Save 您是否尝试过比较 OutlookSpy 中的好消息和坏消息(单击 IMessage 按钮)?

以上是关于删除电子邮件主题中的 [External] 标签,之后无法按主题排序的主要内容,如果未能解决你的问题,请参考以下文章

设置在某个 Twitter 用户使用他们以前未使用过的主题标签时接收电子邮件

Exchange2010/2013/2016删除指定主题邮件

Emberjs 从 URL 中删除主题标签

Exchange 2013 删除指定主题的邮件

通过Powershell调研EWS API删除特定主题邮件操作手册

通过Exchange自带的EMS直接删除用户指定主题内容的邮件