【问题标题】:.Body in Outlook VBA is not getting text of plain text email.Outlook VBA 中的正文没有收到纯文本电子邮件的文本
【发布时间】:2018-12-23 00:49:48
【问题描述】:

.Mailitem 的正文没有返回任何内容

我正在使用 entryID 访问入站电子邮件并使用 Application.Session.GetItemFromID 设置对象

strID = olitem.EntryID
Set olitem = Application.Session.GetItemFromID(strID)

一旦我设置了 olitem
Set olitem = Application.Session.GetItemFromID(strID) 它显示电子邮件已被访问,但是当 sText = oliitem.Body 运行时,stext 最终为空。

这是从 Outlook 规则触发的整个代码。

Sub ParseEPDMRequest(olitem As Outlook.MailItem)


Dim arr() As String
Dim ECONum As String
Dim ReqID As String

Dim sText As String
Dim strID As String

strID = olitem.EntryID
Set olitem = Application.Session.GetItemFromID(strID)

sText = olitem.Body
arr = Split(olitem.Body, ":")
arr = Split(arr(15), " ")
ECONum = GetECONum(arr(8))
sText = olitem.Subject
ReqID = GetReqId(sText)

Call TEAMtoEPDMPush(ECONum & ".xml", ReqID)

End Sub

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

    在某些情况下,消息可以没有纯文本正文。您必须检查正文的格式(see BodyFormat property):

    strID = olitem.EntryID
    Set olitem = Application.Session.GetItemFromID(strID)
    If olitem.BodyFormat=OlBodyFormat.olFormatPlain Then
       sText = olitem.Body
       ...
    ElseIf  olitem.BodyFormat=OlBodyFormat.olFormatHTML Then 
       ...
    

    【讨论】:

    • 谢谢,我会调查的。但是,这将用于特殊情况的邮件地址,该邮件地址是从一个已知且已配置的系统发送电子邮件的,在该系统中控制电子邮件格式。到目前为止,该系统已配置为提供纯文本。我可以通过多种方式配置它。 rtf、html、附件 csv 等。这就是为什么我对 .Body 为空感到困惑。
    • 我没有尝试过这个链接解决方案,但它可能会解决这个问题。 stackoverflow.com/questions/42348518/…
    • 您必须确保纯文本正文确实存在 - 尝试安装 OutlookSpy 工具并在其中使用 VB 脚本。
    • 所有 3 种正文风格(纯文本、HTLM、RTF)在保存项目时由父消息存储自动同步,因此在 HTML 或 RTF 保存时几乎不可能没有纯文本正文可用的。您确定没有;没有尚未下载的邮件正文的仅标题项?
    猜你喜欢
    • 2011-09-28
    • 2013-06-10
    • 1970-01-01
    • 2012-06-14
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多