代码之家  ›  专栏  ›  技术社区  ›  Carl Binalla

使用AddEmbeddedImage时内存泄漏

  •  0
  • Carl Binalla  · 技术社区  · 7 年前

    每当我使用 AddEmbeddedImage PHPMailer

    致命错误:C:\xampp\htdocs\project\phpmailer\class中允许的内存大小为134217728字节(试图分配4096字节)。smtp。php第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) ,我现在遇到的错误是

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

    :

    $result = fwrite($this->smtp_conn, $data);
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Genuine    7 年前

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