Нужно разобрать содержимое пантомимы - PullRequest
0 голосов
/ 29 января 2019

У меня есть закодированная в Base-64 строка содержимого MIME в электронном письме.Само письмо содержит вложение .p7m.

Можно ли использовать Mimekit для анализа содержимого MIME и извлечь вложение?

Спасибо!

1 Ответ

0 голосов
/ 29 января 2019

Мне не совсем понятно, что вы пытаетесь сделать, но, похоже, у вас есть только подмножество сообщения (т.е. закодированное в base64 содержимое одной из частей MIME).

Есливсе, что вы хотите сделать, это получить необработанный smime.p7m файл-вложение (которое находится внутри имеющегося у вас блоба base64), тогда все, что вам действительно нужно сделать, это позвонить File.WriteAllBytes ("smime.p7m", Convert.FromBase64String(base64)).

если вы хотите выполнить какое-либо действие (например, расшифровку или проверку подписи), вам необходимо получить представление ApplicationPkcs7Mime :

ApplicationPkcs7Mime pkcs7;

using (var stream = new MemoryStream ()) {
    byte[] buffer;

    // write the Content-Type header
    buffer = Encoding.ASCII.GetBytes ("Content-Type: application/pkcs7-mime; name=smime.p7m\r\n");
    stream.Write (buffer, 0, buffer.Length);

    // write the Content-Type header
    buffer = Encoding.ASCII.GetBytes ("Content-Type: application/pkcs7-mime; name=smime.p7m\r\n");
    stream.Write (buffer, 0, buffer.Length);

    // write the header termination sequence
    buffer = Encoding.ASCII.GetBytes ("\r\n");
    stream.Write (buffer, 0, buffer.Length);

    // write the base64 encoded content
    buffer = Encoding.ASCII.GetBytes (base64);
    stream.Write (buffer, 0, buffer.Length);

    // rewind the stream
    stream.Position = 0;

    pkcs7 = (ApplicationPkcs7Mime) MimeEntity.Load (stream);
}

Теперь все API-интерфейсы ApplicationPkcs7Mimeдоступны для использования.

...