如何在带有Lotusscript的电子邮件中嵌入图像?

问题描述 投票:0回答:2

我有一个类,它具有使用HTML发送电子邮件的方法。此方法将图像像附件一样包含在电子邮件中。

而且我有一个带有丰富文本字段的表单,用户可以在其中附加图像。

我有问题:

  • 我需要将图像显示嵌入到电子邮件中,并且必须将其放置在正确的位置。附件显示在开头。
  • 还有其他问题:该方法尚未指定富文本字段。因此,我需要知道如何仅显示特定字段。

发送HTML邮件的方法

' Sub to send an email with attachments
Public Sub SendEmailHTMLAttachments()

    ' General variables
    Dim ws As New NotesUIWorkspace
    Dim ns As New NotesSession
    Dim maildoc As NotesDocument
    Dim doc As NotesDocument
    Dim body As NotesMIMEEntity
    Dim mh As NotesMIMEHeader
    Dim mc As NotesMIMEEntity
    Dim stream As NotesStream
    Dim link As New Link

    Set maildoc = ws.Currentdocument.Document
    Set doc = ws.Currentdocument.Document

    ' Dont convert text to rich text
    ns.ConvertMIME = False

    ' Configure the mail
    maildoc.Form = "Memo"
    maildoc.Subject = me.m_subject
    maildoc.SendTo = me.m_sendto
    maildoc.CopyTo = me.m_sendtocc
    maildoc.blindCopyTo = me.m_sendtobcc

    ' Create the MIME headers
    Set body = maildoc.Createmimeentity
    Set mh = body.Createheader({MIME-Version})
    Call mh.Setheaderval("1.0")
    Set mh = body.Createheader("Content-Type")
    Call mh.Setheadervalandparams({multipart/alternative})

    ' Send the plain text part first
    Set mc = body.Createchildentity()
    Set stream = ns.Createstream()
    Call mc.Setcontentfromtext(stream, {text/plain}, ENC_NONE)

    ' Now send the HTML part. Order is important!
    Set mc = body.Createchildentity()
    Set stream = ns.Createstream()
    Call stream.Writetext(|<html lang="es">|)
    Call stream.Writetext(|<head>|)
    Call stream.Writetext(|<meta name="viewport" content="width=device-width, initial-scale=1.0">|)
    Call stream.Writetext(|<meta http-equiv="X-UA-Compatible" content="ie=edge">|)
    Call stream.Writetext(|</head>|)
    Call stream.Writetext(|<body>|)
    Call stream.Writetext(|<div style="background-color: #897d7d; border-radius: 0.5em; width: auto; height: 50px;">
                        <h1 style="color: white; text-align: center; padding: 0.1em;
                        font-family: Cambria, Cochin, Georgia, Times, 'Times New Roman', serif;">| & me.m_header & |</h1>
                        </div>|)
    Call stream.Writetext(|<p>| & me.m_body & |</p>|)
    Call stream.Writetext(|<a href="| & link.GetLink() & |" target="_blank"
                        style="background-color: #A01314; color: white; padding: 14px 25px; text-align: center;
                        text-decoration: none; display: inline-block; border-radius: 1em;">Link to Form</a>|)
    Call stream.Writetext(|</body>|)
    Call stream.Writetext(|</html>|)
    Call mc.Setcontentfromtext(stream, {text/html;charset="utf-8"}, ENC_NONE)

    ' Close the stream
    Call stream.Close()

    ' Send it
    Call maildoc.Send(False)

    Delete link

End Sub

发送电子邮件的事件(按钮)

Sub Click(Source As Button)

    Dim subject As String
    Dim header As String
    Dim body As String
    Dim sendto(1 To 9) As String
    Dim sendtocc(1 To 3) As String
    Dim sendtobcc(1 To 3) As String
    Dim alert As String
    Dim flagalert As Boolean

    subject = "Form Lotus Notes: Test"
    header = "Form Lotus Notes: Test"
    body = "This is an example email using <b>HTML</b>."
    body = body + "<p>Url: <a href='www.google.es'>Google</a></p>."
    sendto(1) = "people"
    alert = ""

    Dim msj As New Mensaje(subject, header, body, sendto, "", "", alert, False)

    Call msj.SendEmailHTMLAttachments

    Delete msj

End Sub

我收到电子邮件的示例

enter image description here

我在做什么错?

lotus-notes lotusscript lotus
2个回答
0
投票

您做错了,因为您正在创建没有图像数据的多部分/替代消息,并且您依靠Domino以某种方式弄清楚您真正想要做什么。不能。

您必须创建整个MIME消息,其中包含一个包含多部分/相关部分和一个多部分/替代部分的多部分/混合部分。

多部分/相关部分必须包含具有内容处置的图像/ gif(或其他有效图像格式)部分。 filename = xxx,并且您需要将图像的编码字节流式传输到该部分中-这并不容易,而且我没有代码向您展示如何做到这一点。我认为DXL可能是大多数人都采用的方法,尽管我很确定MIDAS Rich Text API(不是免费的)使它变得更加容易。

multipart / alternate部分就是您所拥有的,它包含text / plain和text / html部分,但是您的text / hteml部分需要包含一个img标记,该标记正确引用multipart /中的图像数据/使用src = cid:xxx进行关联,其中xxx与您在图像的filename = xxx中输入的内容匹配。


0
投票

解决此问题的一种方法是使用apache commons email Java库https://commons.apache.org/proper/commons-email/

© www.soinside.com 2019 - 2024. All rights reserved.