Php 无法从MIME电子邮件将附件写入磁盘

Php 无法从MIME电子邮件将附件写入磁盘,php,mime,Php,Mime,我正在使用解析原始电子邮件 use ZBateson\MailMimeParser\Message; $message = Message::from($_POST['rawEmail']); foreach ($message->getAllAttachmentParts() as $ind => $part) { $filename = $part->getHeaderParameter( 'Content-Type', 'nam

我正在使用解析原始电子邮件

use ZBateson\MailMimeParser\Message;

$message = Message::from($_POST['rawEmail']);

foreach ($message->getAllAttachmentParts() as $ind => $part) {
    $filename = $part->getHeaderParameter(
        'Content-Type',
        'name',
        $part->getHeaderParameter(
             'Content-Disposition',
             'filename',
             '__unknown_file_name_' . $ind
        )
    );
    file_put_contents($filename, $part->getContent());
}
但它只将部分附件数据写入文件,而不是全部。这在我的本地主机上有效,但在我的服务器(bluehost共享主机)上无效

我查看了图书馆网站上的示例(上面链接),并尝试了除
file\u put\u contents($filename,$part->getContent())之外的许多其他方法来编写文件。例如:

$out = fopen($filename, 'w+');
$str = $part->getBinaryContentResourceHandle();
$contents = stream_get_contents($str);
fwrite($out, $contents);
fclose($str);
fclose($out);

但是没有人会将所有数据写入服务器上的文件。php mailparse扩展没有也不能安装在服务器上(因为它是一个共享主机),但如果它完成了任务,我愿意使用其他库/策略。感谢您的帮助!提前谢谢

$out = fopen($filename, 'w+');
$str = $part->getBinaryContentResourceHandle();
stream_copy_to_stream($str, $out);
fclose($str);
fclose($out);
$stream = $part->getContentStream();
$part->saveContent($filename);