在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
答案 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的定义进行编码。