使用AddEmbeddedImage

时间:2017-11-06 02:57:15

标签: php memory-leaks phpmailer

每当我在AddEmbeddedImage中使用PHPMailer时,都会收到此错误:

  

致命错误:第659行的C:\ xampp \ htdocs \ project \ phpmailer \ class.smtp.php中允许的内存大小为134217728字节(试图分配4096字节)

第659行

$lines = explode("\n", str_replace(array("\r\n", "\r"), "\n", $msg_data));

以下是代码的一部分:

$mail->Body = '
    <html>
        <head>
            <title>Sign-Up Verification</title>
        </head>
        <body style="text-align:center;">
            <img src="cid:letterhead">
        </body>
    </html>
';
$mail->AddEmbeddedImage('img/letterhead.jpg', 'letterhead', 'letterhead.jpg');

相对路径是正确的,所以我不认为这是问题所在。我已经尝试过使用绝对路径:

<img src="C:\xampp\htdocs\project\img\letterhead.jpg"/>

虽然错误消失,但邮件中没有显示图像。

关于错误的线程说增加内存限制应该删除它,但我试图避免编辑php.ini只是为了安全。我还查看了使用AddEmbeddedImage()的线程,但没有任何问题说明错误,语法是正确的。

我真的应该增加内存限制吗?或者这是一个本地主机问题?

更新

尝试使用较小的图像(大小为1.5mb,原始图像为26.7mb),我现在遇到的错误是

  

致命错误:第999行的C:\ xampp \ htdocs \ amac2017 \ phpmailer \ class.smtp.php超过30秒的最长执行时间

第999行

$result = fwrite($this->smtp_conn, $data);

1 个答案:

答案 0 :(得分:2)

PHPMailer::AddEmbeddedImage()用于在电子邮件中添加图像很受欢迎,因此不太可能导致内存泄漏。允许根据需要调整PHP的配置文件。也许你可以缩小你的图片并适当调整php.ini。