Huh, I'm surprised this still exists.

This is legacy n9 code that should go away. vCards should be stored in the same way as any message part, so they can be tracked and cleaned up too. `MmsHandler::copyMessagePartFile` implements that storage logic currently.

To store a vcard, copy the file as seen in that function (we should make it public somewhere), and add a MessagePart to the Event with the right content type.