【问题标题】:Getting email body using vba code使用 vba 代码获取电子邮件正文
【发布时间】:2015-07-29 05:15:20
【问题描述】:

我正在尝试使用 VBA 在 Outlook 中获取电子邮件中的电子邮件标题和正文。我正在使用Application_NewMail() 事件处理程序来处理新邮件已经到达,但我不知道如何从那里获取标题和正文。

这是我在 Application_NewMail() 事件处理程序中的代码:

Private WithEvents myOlItems  As Outlook.Items

Private Sub Application_NewMail()
Dim olApp As Outlook.Application
Dim oNS         As NameSpace
Dim oFolder     As MAPIFolder
Dim oNewMail    As MailItem
Set olApp = Outlook.Application
Set oNS = GetNamespace("MAPI")
Set oFolder = oNS.GetDefaultFolder(olFolderInbox)
Set oNewMail = oFolder.Items.GetFirst
'This is the string that hold the mail body.
Dim mailBody As String
Dim mailArg() As String


    MsgBox "New Mail!"

End Sub

一旦我收到电子邮件,此功能就会正常触发。我成功让消息框弹出。但我希望能够读取邮件正文和标题以插入数据库。

它的实际数据库方面我知道该怎么做,但我不确定如何从电子邮件中获取标题和正文。我尝试过这样的事情:

Set olItem = ActiveExplorer.Selection.Item(1)
    mailBody = oNewMail.Body
    mailArg = Split(mailBody, vbLf)

    'Check to see what is inside the body. We need to say Tank X: Y
    MsgBox "This is line one " & mailArg(0) & "This is line two " & mailArg(1)

我收到错误:Object variable or With block variable not set

任何帮助将不胜感激。

【问题讨论】:

    标签: vba email outlook


    【解决方案1】:

    您需要处理 Application 类的 NewMailEx 事件。对于 Microsoft Outlook 处理的每个收到的项目,此事件都会触发一次。该项目可以是几种不同的项目类型之一,例如 MailItem、MeetingItem 或 SharingItem。 EntryIDsCollection 字符串包含对应于该项目的条目 ID。

    NewMailEx 事件在新邮件到达收件箱时以及在客户端规则处理发生之前触发。您可以使用 EntryIDCollection 数组中返回的条目 ID 来调用 NameSpace.GetItemFromID 方法并处理该项目。

    Outlook 对象模型提供了三种处理项目主体的主要方式:

    1. Body
    2. HTMLBody
    3. Word 编辑器。 Inspector 类的WordEditor 属性返回代表消息正文的Word 文档实例。因此,您可以使用 Word 对象模型对消息正文进行任何您需要的操作。

    最后,您可以使用 PropertyAccessor 对象(参见 MailItem 类的相应属性)来读取“PR_TRANSPORT_MESSAGE_HEADERS”属性值。

      propertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x007D001E")
    

    【讨论】:

    • 对不起,我觉得我不太明白。我需要在NewMailEx 事件处理程序而不是Application_NewMail() 事件处理程序中工作?
    • 是的,NewMailEx 事件提供了作为参数传递的字符串,可用于GetItemFromId 方法获取邮件项目对象。
    • 对不起,我花了这么长时间才回来,今天早上我会试试这个。感谢您的帮助。
    • 所以我设置了事件,但我不完全确定如何使用 ID 访问正文。抱歉,我对 vba 知之甚少。
    • 我想我已经弄清楚了事件处理程序,但是当我调用对象的主体函数时,什么也没有发生。知道会发生什么吗?
    猜你喜欢
    • 1970-01-01
    • 2011-08-24
    • 2021-07-26
    • 2013-04-30
    • 2021-09-30
    • 1970-01-01
    • 2014-02-10
    • 2020-07-04
    • 2011-03-15
    相关资源
    最近更新 更多