Нужно разобрать содержимое пантомимы

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

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

Спасибо!

1 ответ

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

Если все, что вы хотите сделать, это получить сырье smime.p7m вложенный файл (который находится внутри BLOB-объекта 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.

Другие вопросы по тегам