【问题标题】:can't attach more than 8 mb in phpMailer v5在 phpMailer v5 中不能附加超过 8 mb
【发布时间】:2015-04-30 10:38:44
【问题描述】:

我正在使用 phpMailer v5。从今天开始它工作正常,但今天我尝试附加两张图片,邮件正文各为 4.1 MB。它返回 PHP 致命错误。

致命错误:/PHPMailer-master/class.smtp.php 第 616 行中允许的 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!";
}

【问题讨论】:

    标签: php phpmailer


    【解决方案1】:

    在处理的某一时刻,PHPMailer 将消息拆分为一行一行的数组。这会带来相当大的开销(大约是数据大小的 3 倍),因为 PHP 的数组存储并不是特别有效。这种方法的优点是速度非常快,但缺点是它会吃掉内存。解决方案是增加您的 PHP 内存分配,或者不发送如此大的附件 - 发布链接通常是更好的解决方案;对于大数据传输,电子邮件确实不是一个好的机制。

    【讨论】:

    • 我现在在使用 PHPMailer 的 2.5MB excel XLS 附件上也遇到了这个问题。它耗尽了 128MB 内存,它被分割成一行一行的数组!我将内存限制增加到 200MB,它工作正常。但从长远来看,如果您发送较大的文件大小的附件,这不是一个解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多