2012-05-02 9 views
1

LotusScriptエージェントでは、MIMEクラスを使用してMIMEで複数部分メールを作成します。それは動作し、メールは正しく送信されます。LotusScriptを使用して拡張文字(アクセント付き)を含む添付ファイルを含む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 

が、ファイルの名前は、コード化されています

はここ(の一部)私のコードです。これを取り除くにはどうすればいいですか?

更新: 私は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

それは、@関数URLENCODEとURLDecodeが指数関数的に速くLotusScriptの同等物を書くよりであることを言及する価値があるので、これは間違いなく行くための方法です評価1の場合です。 –

答えて

1

私はパラメータをエンコードするための任意の方法を見つけることができませんでした。 自分でパラメータをエンコードする必要があるようです。

@URLEncode(encodingFormat ; token) 

文字列をエンコードすると、=?ISO-8859-1?Q? ?=文字列に。

それとも、LS2J

+0

作品!!上記の質問の更新を参照してください。 –

+0

本当ですか? Q?エンコーディングとは、 "引用符付きの印刷可能"を意味します。これは、URLエンコード形式と同じではありません。ああ、待って...あなたの更新では、 "%"を "="に変換して調整していることが分かります。しかし、もう一つは、8859は0xff未満のchar値に対してのみ動作するということです。 LotusScriptは内部的にUnicodeを扱っているため、標準的な西ヨーロッパの文字以外のものに対処する必要がある場合は、代わりにUTF8またはUTF16を指定する必要があります。@ URLEncodeは、たくさんの微調整。 –

+0

良い方法がありますか? NotesMimeオブジェクトを置き換えるJavaMIMEオブジェクトを開発する時間はありません。 –

0

にあなたがここで説明するように、ファイル名をエンコードするために持っていることをjavax.mail.internetパッケージのエンドラップからencodeTextを使用することができます。

RFC 2231で定義されたファイル名を符号化することができます。

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) 
関連する問題