如何使用LotusScript创建包含扩展字符(带重音符号)的附件的MIME邮件

时间:2012-05-02 10:08:22

标签: lotus-notes mime lotus lotusscript

在LotusScript代理中,我使用MIME类在MIME中创建多部分邮件。它工作正常,邮件发送正确。

只有一个大问题:名称中带有重音字符的文件未正确传输。内容是正确的,但名称不是。我试过100种方式,但要么是不可能,要么我做错了。

这是我的代码的一部分:

Set Me.mc = Me.mr.createChildEntity()
Set Me.mh = Me.mc.CreateHeader("Content-Disposition")
Call Me.mh.SetHeaderVal(disposition + {; filename="} & attName & {";charset="iso-8859-1"} )
Set Me.mh = Me.mc.CreateHeader("Content-ID")
Call Me.mh.SetHeaderVal( |<| & attName & |>| )
Set stream = Me.session.CreateStream
If stream.Open(attFile) Then
    Call Me.mc.SetContentFromBytes(stream, strContentType & {; charset="iso-8859-1"; name="} & attName & {"}, ENC_IDENTITY_BINARY)
    Call stream.Close
End If

如果我在Notes中手动创建邮件并发送相同的文件,则可以使用,但文件的名称已编码。如何拉掉这个?

更新 我添加了以下函数来编码attName:

Function URLEncode(s As String, cset As String) As String
    Dim v As Variant

    v= Evaluate(|@ReplaceSubstring(@URLEncode("| + cset + |";"| + s + |"); "%"; "=")|)
    URLEncode= "=?" + cset + "?Q?" + v(0) + "?="
End Function  

3 个答案:

答案 0 :(得分:1)

我找不到任何编码参数的方法。 看起来你必须自己编码参数。

@URLEncode( encodingFormat ; token )

应编码字符串,然后你可以添加=?ISO-8859-1?Q?和?=字符串。

或者您可以使用来自LS2J中的encodeText包裹结尾包装中的javax.mail.internet

答案 1 :(得分:1)

我从来没有嵌入文件,只是图像,但听起来像使用@URLEncode可能值得尝试。

Dim attNameEncoded As String
attNameEncoded = Evaluate({@URLEncode("iso-8859-1"; "} + attName + {")})(0)
Call Me.mc.SetContentFromBytes(stream, strContentType & {; charset="iso-8859-1"; name="} & attNameEncoded & {"}, ENC_IDENTITY_BINARY)

答案 2 :(得分:0)

您必须按照此处所述对文件名进行编码:

文件名可以按照RFC 2231的定义进行编码。