Нужно разобрать содержимое пантомимы
У меня есть строка в кодировке 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.