0

マルチパート本文を持つ MIME ファイル (電子メールではない) があります。1 つは xml で、もう 1 つは Application\PDF です。PDFを保存しようとしても開かない。私はおそらくそれを正しく行っていないだけです(ファイルは保存されますが、アドビはファイルを開こうとするとファイルが壊れていると言います)。

次のコードを使用しています: (注: このスニペットでは、ファイルから情報を取得してデータベースに保存しているだけです。後でデータベースからデータを抽出してファイルを作成します。徹底的にテストされているため、問題であるDBへの/からの保存.私の問題を引き起こしているのはこの方法にあります.)

foreach (var part in _mimeMessage.BodyParts)
{
    if (part is MimePart)
    {
        var p = part as MimePart;

        if (p.ContentId == name)
        {
            using (var stream = new System.IO.MemoryStream())
            {
                p.ContentObject.WriteTo(stream);

                return stream.ToArray();
            }
        }
    }
}

これを行う際に欠けているものはありますか?

4

2 に答える 2

0

エンコードされたコンテンツを保存しています。デコードされたコンテンツを保存する必要があります。このような:

p.ContentObject.DecodeTo(stream);
于 2016-06-01T17:35:50.317 に答える
0

問題は、私が持っていたファイルがbase64を使用して「二重にエンコード」されていたことです。私は MimeKit フォーラムの誰かから助けを得ました。これが私のために働いたコードです。

            foreach (var attachment in _mimeMessage.BodyParts.OfType<MimePart>())
        {
            if (attachment.ContentId != name)
                continue;

            using (var stream = new System.IO.MemoryStream())//File.Create(@"C:\Client Test Data\Alert Files\" + name))
            {
                using (var filtered = new FilteredStream(stream))
                {
                    filtered.Add(DecoderFilter.Create("base64"));
                    attachment.ContentObject.DecodeTo(filtered);

                    return stream.ToArray();
                }
            }
        }
于 2016-06-03T12:28:57.403 に答える