在phpMailer v5中不能超过8 MB

时间:2015-04-30 10:38:44

标签: php phpmailer

我正在使用phpMailer v5。从今天起它工作正常,但今天我试图附上两个邮件正文,每个4.1 MB。并且它返回了PHP致命错误。

致命错误:第616行/PHPMailer-master/class.smtp.php中允许的内存大小为67108864字节(试图分配32个字节)

当我尝试使用较小的图像时,它工作正常,但当图像总大小超过8 mb时,它返回错误。

我检查了64M的内存限制 post_max_size 48M upload_max_filesize 32M

这是我的代码

$SendMail = new PHPMailer();
$SendMail->setFrom('from@example.com', 'First Last');
$SendMail->addAddress('whoto@example.com', 'John Doe');
$SendMail->Subject = "Mail Subject";
$SendMail->Body = "This is the body of the message.";
$SendMail->addAttachment($pic1);
$SendMail->addAttachment($pic2);
if (!$SendMail->send()) {
    echo "Mailer Error: " . $SendMail->ErrorInfo;
} else {
    echo "Message sent!";
}

1 个答案:

答案 0 :(得分:1)

在处理过程中,PHPMailer将消息拆分为逐行数组。由于PHP的阵列存储不是特别有效,因此这会产生相当大的开销(约3倍大小的数据)。这种方法的优点是速度非常快,但缺点是它会占用内存。解决方案是增加你的PHP内存分配,或者不发送这么大的附件 - 这通常是发布链接的更好的解决方案;电子邮件确实不是大数据传输的好机制。