Here a full example to save ZIP files attachments in their original name.
<?php
$email_raw = '(raw e-mail contents buffer)';
$parser = mailparse_msg_create(); mailparse_msg_parse($parser, $email_raw);
$structure = mailparse_msg_get_structure($parser); foreach ($structure as $part_label) { $part = mailparse_msg_get_part($parser, $part_label); $part_data = mailparse_msg_get_part_data($part); if ($part_data['content-type'] ?? null === 'application/zip') {
$name = $part_data['disposition-filename'] ?? $part_data['content-name'] ?? 'unknow.zip';
$contents = mailparse_msg_extract_part($part, $email_raw, null); file_put_contents($name, $contents);
}
}
mailparse_msg_free($parser);