LotusScript:组合两个NotesMIMEEntity对象

时间:2016-06-28 14:39:26

标签: lotus-notes mime lotusscript

我编写了一些代码来使用MIME对象创建和发送新邮件。这有效,这里没有问题。

现在我需要添加现有文档的正文。 Body字段也是MIME。将此NotesMIMEEntity对象添加到邮件的正确方法是什么?我可以组合两个NotesMIMEntity对象吗?我可以将一个物体附加到另一个物体上吗?

感谢您的帮助!

更新

这就是我尝试过的。对象项包含来自其他文档的MIMEEntity。对象体是正在构建的新MIMEEntity。代码的结果是zip,nada ......

Set bodyChild= body.createChildEntity()
Set stream= session.Createstream()
Call item.Getcontentasbytes(stream)
Call bodyChild.Setcontentfrombytes(stream, {text/html;charset="iso-8859-1"}, ENC_NONE)
Call stream.Close()

2 个答案:

答案 0 :(得分:2)

这里是将文本,图像和一些标题复制到目标MIME实体的代码。我希望其他人也可以使用它。谢谢大家!

* soft nofile 4096
* hard nofile 4096

答案 1 :(得分:1)

我只想评论 D.Bugger 解决方案,该解决方案很棒,而且没有问题。

我想补充一点,如果某些子实体是文件附件,则需要使用以下正弦值:

Call childTo.createHeader( mimeHeader.HeaderName ).Setheadervalandparams( mimeHeader.Getheadervalandparams() )

因为“ Content-Type ”和“ Content-Disposition ”标题中的“参数”包含有意义的信息,即文件附件文件名。

此外,您还应该在从子级获得的标题中至少添加另一个标题,即“ Content-Type ”。

否则,将复制文件附件子实体,但是它们将缺少文件名和类型,因此将无用。

完整的经过纠正的Do循环在这里:

Do Until childFrom Is Nothing
    Set childTo= mimeTo.createChildEntity()

    Set mimeHeader= childFrom.GetNthHeader("Content-Type")

    If Not mimeHeader Is Nothing Then
        Call childTo.createHeader( mimeHeader.HeaderName ).Setheadervalandparams( mimeHeader.Getheadervalandparams() )
    End If

    Set mimeHeader= childFrom.GetNthHeader("Content-Disposition")

    If Not mimeHeader Is Nothing Then
        Call childTo.createHeader( mimeHeader.HeaderName ).Setheadervalandparams( mimeHeader.Getheadervalandparams() )
    End If

    Set mimeHeader= childFrom.GetNthHeader("Content-ID")

    If Not mimeHeader Is Nothing Then
        Call childTo.createHeader( mimeHeader.HeaderName ).Setheaderval( mimeHeader.Getheaderval() )
    End If

    Call CopyMultipartMime(childFrom, childTo)

    Set childFrom = childFrom.GetNextSibling
Loop

除此之外,感谢您的回答,如果我发表了回答,对不起,但显然我无法评论您的问题。