【发布时间】:2017-02-15 09:47:54
【问题描述】:
我正在对原始电子邮件运行 PHP 脚本,它将附件写入磁盘。每次收到电子邮件时,原始电子邮件数据都会被转发到脚本,该脚本会解析电子邮件数据并从中提取附件。
现在这对于小型附件来说效果很好。但是,当附件大小约为 3mb 或更大时,脚本不会将文件写入磁盘,或者仅写入大约 700kb 的数据。我尝试更改 php.ini 中的 PHP 配置设置,但没有用。更令人沮丧的是,相同的脚本在我的本地机器上运行得很好,并且可以完美地从原始电子邮件数据中提取附件。
我正在使用this library 来解析原始电子邮件。
这是我的代码的样子,适用于小附件:
...
$mailparser = new ZBateson\MailMimeParser\MailMimeParser();
$handle = fopen($receivedfile.'.txt', 'r');
$message = $mailparser->parse($handle);
$attachment1 = $message->getAttachmentPart(0);
$attachment2 = $message->getAttachmentPart(1);
$file1contents = stream_get_contents($attachment1->getContentResourceHandle());
$file2contents = stream_get_contents($attachment2->getContentResourceHandle());
file_put_contents("path/to/upload/folder/image1.jpg", $file1contents);
file_put_contents("path/to/upload/folder/image2.jpg", $file2contents);
fclose($handle);
有人知道如何解决这个问题吗?
【问题讨论】:
-
你遇到什么样的错误?
-
如果您不能自己做,请让您的网站管理员增加大小
-
我要检查的第一件事是 $file1contents 和 $file2contents 的大小,因此您可以区分磁盘问题(刷新/同步(不太可能)、覆盖(可以,可能脚本启动两次)) stream_get_contents() 问题(库问题,脚本过早结束,二进制字符串管理错误 - 文件写入可能在第一个字节 '\0' 结束)
-
@Jack 一般在单个附件大小为3mb+时发生
-
是的.. 我的意思是.. 在运行时检查它