# parse_mime ```lua local mime_part = message:parse_mime() ``` {{since('2025.10.06-5ec871ab')}} Returns a [MimePart](../mimepart/index.md) representation of the message content. !!! note While you can modify the returned mime structure, any such changes are not automatically reflected in the message content. You must explicitly re-assign the content via `msg:set_data(tostring(mime_part))` to apply them. ## Example: attachment extraction This demonstrates how to obtain a list of all attachments found (recursively) in the incoming message and print out the file name, content type and the decoded content. This is not a useful production-ready example (you definitely don't want to log all of the attachment content like this!) but can serve as a starting point for policies that need to operate on attachments for scanning, compliance or automation purposes. ```lua kumo.on('smtp_server_message_received', function(message, conn_meta) local mime_part = message:parse_mime() local structure = mime_part:get_simple_structure() for _, attachment in ipairs(structure.attachments) do print(attachment.file_name, attachment.content_type, attachment.part.body) end end) ```