VBA:在Lotus Notes中使用HTML突出显示文本

时间:2017-04-04 12:55:56

标签: html vba lotus-notes

我很难通过在Lotus Notes和VBA中使用HTML来对我的文本进行简单的突出显示。

我使用了以下属性<span style=background:yellow;mso-highlight:yellow><style="background-color:yellow">但没有取得任何成功,我几乎要放弃了。是否可以在Lotus Notes上执行此简单操作?

这里附有我的代码和结果截图:

  1. VBA代码

    Sub SendLocalExtensionEmail()

    Dim nMailBody As String
    Dim nMailSubject As String
    Dim nMailRecipient As Variant
    Dim nMail As Object
    Dim nSession As Object
    Dim nDatabase As Object
    Dim nMime As Object
    Dim nMailStream As Object
    Dim nChild As Object
    Dim nSomeMailBodyText As String
    Dim amountOfRecipients As Integer
    
  2. &#13;
    &#13;
       msg_var = "<font face=Arial> <p style=font-size:10pt>" & _
              "Dear Sir/ Madam, <br />" & _
              "<br />" & _
              "MANY LINES OF TEXT" & _
              "<font color=red><span style=background:yellow;mso-highlight:yellow>" & _
              "Please revert within 5 working days" & _
              "</font></span>" & _
              "Best Regards, <br />" & _
              "</font>"
    &#13;
    &#13;
    &#13;

        nSomeMailBodyText = msg_var
        nMailRecipient = ""
        nMailSubject = "A great email"
    
        Set nSession = CreateObject("Notes.NotesSession")
        Set nDatabase = nSession.GetDatabase("", "")
        Call nDatabase.OPENMAIL
        Set nMail = nDatabase.CreateDocument
    
        nMail.SendTo = "hello@world.com"
        nMail.Subject = "hello@world.com"
    
        nSession.ConvertMIME = False
        Set nMime = nMail.CreateMIMEEntity
        Set nMailStream = nSession.CreateStream
    
        'vBody containung the text in Html
        Call nMailStream.WriteText(nSomeMailBodyText)
        Call nMailStream.WriteText("<br>")
    
        '-------------------------------------------------------------------
    
        Set nChild = nMime.CreateChildEntity
        Call nChild.SetContentFromText(nMailStream, "text/html;charset=iso-8859-1", ENC_NONE)
        Call nMailStream.Close
        nSession.ConvertMIME = True
        Call nMail.Save(True, True)
        'Make mail editable by user
        CreateObject("Notes.NotesUIWorkspace").EDITDOCUMENT True, nMail
        'Could send it here
    End Sub
    
    1. 我的结果输出:
    2. Output result

      请帮忙!我很好奇,知道那里发生了什么。

1 个答案:

答案 0 :(得分:1)

酸测试是指如果将HTML发送给Notes用户,您的HTML是否有效。如果它能够满足您的需求,则Notes客户端可以处理它,您的代码不会发送您认为应该的内容。如果它没有,则Notes无法处理该HTML构造,您需要找到另一种方法来执行您想要的操作。

使用Telnet到端口25上的Domino服务器测试HTML,并将其发送给测试用户。 lots tutorials涵盖了基本技术。他们中的大多数人都没有提到(a)将邮件内容键入文件并将其粘贴到您的telnet窗口比键入它更容易 - 然后是几个新行和一个带有点字符和另一个换行符的行,以及(b)邮件的内容包括标准标题和mime标题,因此如果您不熟悉,则必须了解这些内容的工作原理。

除了阅读相关的RFC 2045&amp; 5322,学习qbout标题的最佳方法就是检查您收到的邮件来源 - 例如,通过“显示原始文件”#39;在gmail中,或者在Notes中显示 - 显示页面源。笔记很宽容。 &#39; To:&#39;和&#39;主题:&#39;和&#39;日期:&#39;标题不是必需的。收件人将由“RCPT TO”确定。命令,在您输入消息之前。您肯定需要一个指定text / html的内容类型标头; charset = iso-8859-1。不要忘记在最后一个标题行和实际消息内容之间添加一个空行。 (请注意,为此目的,您不必担心设置多部分邮件并处理部分边界,因此如果您在收到的邮件来源之后进行建模,请查看对于在第一个空白行之前的某个地方只有一个简单的content-type: text/html;charset=something标题的人。)