1

LotusScript エージェントで、MIME クラスを使用して、MIME でマルチパート メールを作成します。動作し、メールは正しく送信されます。

1 つだけ大きな問題があります。名前にアクセント付きの文字が含まれるファイルは正しく転送されません。内容は正しいが、名前が間違っている。私は 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  
4

3 に答える 3

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)
于 2012-05-02T14:55:46.990 に答える
1

パラメータをエンコードする方法が見つかりませんでした。パラメータを自分でエンコードする必要があるようです。

@URLEncode( encodingFormat ; token )

文字列をエンコードしてから、=?ISO-8859-1?Q? を追加できます。および ?= 文字列に。

または、LS2JencodeTextのパッケージエンドラップから使用できますjavax.mail.internet

于 2012-05-02T11:09:07.353 に答える
0

ここで説明されているように、ファイル名をエンコードする必要があります。

ファイル名は、 RFC 2231で定義されているようにエンコードできます。

于 2012-05-02T13:50:49.427 に答える