我在 Domino 服务器上创建了一条 mime 消息,但结果不稳定,具体取决于逐项服务器。
详细信息:我正在创建一个包含内联图像的备忘录,源文件存储在服务器文件系统中。插入备忘录的图像如下:
'container is a parent mime entity, where images will be stored
For i = 0 To Ubound(images)
If Dir$(images(i).FileName) = "" Then Error 15001, ERR_FILE_NOT_FOUND
Set stream = session.CreateStream
stream.Open images(i).FileName, "binary"
Set child = container.CreateChildEntity
child.SetContentFromBytes stream, images(i).ContentType, ENC_NONE
child.EncodeContent ENC_BASE64
fileName = "i" + CStr(i) + "." + ExtractFileExtension(images(i).FileName)
Set header = child.GetNthHeader("Content-ID", 1)
If header Is Nothing Then Set header = child.CreateHeader("Content-ID")
header.SetHeaderVal "<" + fileName + ">"
Set header = child.GetNthHeader("Content-Type", 1)
If header Is Nothing Then Set header = child.CreateHeader("Content-Type")
header.SetHeaderValAndParams images(i).ContentType + {; name="} + fileName + {"}
Set header = child.CreateHeader("Content-Disposition")
header.SetHeaderValAndParams {inline; filename="} + fileName + {"}
stream.Close
Next
这是结果标题:
Headers: "Content-Transfer-Encoding: binary
Content-Type: image/jpeg;
name="i0.jpg"
Content-Disposition: inline;
filename="i0.jpg"
Content-ID: <i0.jpg>
"
Body: "i0.jpg"
它在除 Lotus 之外的任何邮件客户端中都具有魅力。根据创建备忘录的服务器,Lotus 可以显示内联图像和附件,或仅显示内联图像(见附件图片)。
渲染OK
渲染不佳
ls代码一模一样,备忘录一模一样(ok,除了服务器名、unid、时间值),只是备忘录显示不一样,Content-Disposition头被忽略了。
经过广泛调查后,我发现 mime 附件的 $FILE 字段存在一个小差异,请参见图片:
当“主机”属性为“2304”时,渲染正常,当它设置为“MSDOS/OS2”时,内联图像复制为附件。
那么,问题是如何设置这个附件字段 HOST 参数?或者有什么方法可以让 LN 客户端符合 Content-Disposition 标头?