更改传入的Outlook邮件主题

时间:2015-11-26 09:55:28

标签: vba email outlook outlook-vba outlook-2007

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

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

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。

任何想法?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

第二个例子似乎没有任何问题。

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

哪会导致您将objMail更改为olMail

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