【问题标题】:Vba doesn't forward the latest message in the conversationVba 不转发对话中的最新消息
【发布时间】:2016-01-21 00:21:00
【问题描述】:
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
Set myitems = myInbox.Items

For Each myitem In myitems
    If myitem.Class = olMail Then
        If InStr(1, myitem.Subject, "Hi") > 0 Then
            If myitem.Sender.GetExchangeUser.PrimarySmtpAddress = "xyz@abc.com" Then
                With myitem.Forward
                    .Recipients.Add "pqr@abc.com"
                    .CC = "xyz@abc.com"
                    .Body = "Hey,there"
                    .Send
                End With
            End if
        End if
    End if
Next myitem

基本上,如果我从 xyz 收到 最后一封带有主题行的电子邮件“Hi”,那么我想转发 strong> 到 pqrCC xyz 。一切正常,但转发的消息不是原始消息,它只是撰写了一封新电子邮件。除了从 xyz 收到的内容之外,我在转发电子邮件时总是想添加一些内容。任何人都可以帮忙吗?谢谢。

编辑:- 如果我在 With myitem.Forward 之后立即放置一个显示命令,它会显示整个线程,但一旦我添加收件人和正文,它就会消失并变成新电子邮件。另外我认为它可以将 .body 解释为整个新主体,我应该找到一些可以添加到现有主体的东西。

【问题讨论】:

  • 您要发送最新的(根据您的标题)还是原件(根据您的文本)?你怎么得到myitem
  • 可能有很多误报。如果主题是“我的团队上周得分非常High”怎么办?
  • 你试过.Body = "Hey,there" & vbNewLine & myitem.Forward
  • @DickKusleika 我正在循环收件箱中的所有电子邮件,这就是获取 myitem 的方法。谢谢。
  • 添加到现有正文:.Body = "Hey, there" & vbCrLF & .Body

标签: vba outlook


【解决方案1】:

如果您需要保留现有消息,您应该在现有属性值之前插入文本(如果是纯文本电子邮件)。

  .Body = "Hey,there" + .Body

或者将您的 HTML 标记注入到 <body> 元素中,以保持 HTML 标记的格式正确。

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

  1. Body - 表示 Outlook 项目的明文正文的字符串。
  2. HTMLBody - 表示指定项的 HTML 正文的字符串。
  3. Word editor - 正在显示的消息的 Microsoft Word 文档对象模型。 Inspector 类的 WordEditor 属性从 Word 对象模型返回 Document 类的一个实例,您可以使用它来设置消息正文。

您可以在Chapter 17: Working with Item Bodies 中阅读有关所有这些方式的更多信息。选择哪种方式来自定义消息正文由您决定。

【讨论】:

    猜你喜欢
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 2019-02-21
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多