【问题标题】:Outlook VBA - can view email Source Code?Outlook VBA - 可以查看电子邮件源代码?
【发布时间】:2019-02-04 21:39:04
【问题描述】:

在 MS Outlook 中,我想遍历每封选定的电子邮件,对于每封电子邮件,查看源代码并检查源文件(如 txt 格式)是否包含某个字符串“XX”。由于使用查看源代码可以将电子邮件内容显示为 html 格式,因此我想跟踪一些文本中存在问题的格式。

目前我是手动打开邮件,右键>查看源>Ctrl+F找到我要找的字符串。

有没有视图可以用VBA做邮件中“查看源代码”的动作?

Dim individualItem As Object
For Each individualItem In Application.ActiveExplorer.Selection

    'View Source Code of the email

    'Find "XX" in the email body content
     If Instr(individualItem.body, "XX") = 1 Then
     Msgbox ("Find string!")
     End if

Next Message

谢谢。

【问题讨论】:

  • 邮件正文中没有的源代码是什么?

标签: vba outlook


【解决方案1】:

“来源”是指邮件的 MIME 标头吗?它们存储在 PR_TRANSPORT_MESSAGE_HEADERS 属性中 - 查看带有 OutlookSpy 的消息(单击 IMessage 按钮)。您可以使用MailItem.PropertyAccessor.GetProperty 读取该属性。 PR_TRANSPORT_MESSAGE_HEADERS 属性 "http://schemas.microsoft.com/mapi/proptag/0x007D001F" 的 DASL 名称。

【讨论】:

    【解决方案2】:

    您几乎是对的,我看到了两个问题:
    1.) 有两个不同的属性Body(仅文本)和HTMLBody
    2.) Instr 返回搜索令牌的位置。如果找到令牌,它可以是任何正数。

    那就试试吧:

    If Instr(individualItem.HTMLBody, "XX") <> 0 Then
    

    【讨论】:

    • 感谢克库。您是否知道任何 vba 代码都可以“查看”电子邮件内容的源代码 - 这是我的问题。查看源代码后,它将以 txt 格式显示,并带有电子邮件的 html 代码。我想在进行 Instr 搜索之前先了解该部分
    • 我没有看到这是你问题的一部分,但我不知道你是否可以从代码中触发它。但是,您可以在HTMLBody 中找到文本。 Outlook 似乎只是将它保存到一个临时文本文件并打开它,你可以用几行代码来做同样的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多