【问题标题】:Change incoming Outlook mail subject更改传入的 Outlook 邮件主题
【发布时间】:2016-02-29 08:40:49
【问题描述】:

我在收到的邮件上运行了一条规则,该规则将主题行中带有特定字符串的项目移动到文件夹中。然后它运行一个脚本来用其他东西替换部分主题。

我在脚本中设置了断点以确保它正在运行而不是宏安全问题。它会读取主题,但不会保存更改。我从寻找类似结果的人那里得到了脚本

Sub RunAScriptRuleRoutine(MyMail As Outlook.MailItem)
Dim strID As String
Dim olNS As Outlook.NameSpace
Dim olMail As Outlook.MailItem

strID = MyMail.EntryID
Set olNS = Application.GetNamespace("MAPI")
Set olMail = olNS.GetItemFromID(strID)
' do stuff with olMail, e.g.
olMail.Subject = Replace(objMail.Subject, "[Jira]", "something else")
olMail.Save

Set olMail = Nothing
Set olNS = Nothing
End Sub

我知道上面的内容是多余的,所以我也用更简单的代码检查了它,但仍然没有成功,它只是保持与它进来的相同的主题行。

Public Sub Whatever(Mail As Outlook.MailItem)
Mail.Subject = "Hello"
Mail.Save
End Sub

似乎我误解了 MailItem.Save 方法,但我无法解决。

我使用的是 Outlook 2007。

有什么想法吗?

【问题讨论】:

    标签: vba email outlook outlook-2007


    【解决方案1】:

    第二个例子似乎没有什么问题。

    对于第一个示例,您缺少 Option Explicit

    这会导致您将 objMail 更改为 olMail

    olMail.Subject = Replace(olMail.Subject, "[Jira]", "something else")
    

    【讨论】:

    • 人们可能还想更改.ConversationTopic,而不仅仅是.Subject
    【解决方案2】:

    MailItem 类的Move 方法将 Microsoft Outlook 项目移动到新文件夹并返回一个 Object 值,该值表示已移动到指定文件夹的项目。

    因此,您需要在返回的对象上设置Subject 属性,而不是源对象。

    【讨论】:

    • 那么我应该将移动作为脚本的一部分吗?或者我可以在内置 Outlook 移动规则之后设置移动项目的主题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 2022-01-02
    • 2020-04-05
    • 1970-01-01
    • 2013-06-16
    • 2016-09-25
    • 1970-01-01
    相关资源
    最近更新 更多