当我们使用phpMailer发送带有动态内容的邮件时,如何在邮件正文中显示多个内联图像

当我们使用phpMailer发送带有动态内容的邮件时,如何在邮件正文中显示多个内联图像,php,phpmailer,Php,Phpmailer,我正在尝试用PHPMailer和图像发送HTML邮件。正文从包含所有信息的html文件加载或复制 所以,我如何从body中动态查找内联图像并对其应用AddEmbeddedImage()方法呢 PHP代码 $mail->addReplyTo($from, $fromName); $mail->addBCC($from); $mail->isHTML(true); $mail->Subject = $subject; $mail->B

我正在尝试用PHPMailer和图像发送HTML邮件。正文从包含所有信息的html文件加载或复制

所以,我如何从body中动态查找内联图像并对其应用AddEmbeddedImage()方法呢

PHP代码

  $mail->addReplyTo($from, $fromName);
    $mail->addBCC($from);
    $mail->isHTML(true);
    $mail->Subject = $subject;
    $mail->Body = $body;
    $mail->AddEmbeddedImage($filepath, $filecid, $filename);
   if(!$mail->send()) 
            {
                echo "Failed To Send Mail";
                exit;
            } 
            else
            {
                echo "Mail Has Been Sent";
                exit;

            }

要检索与每个cid关联的文件路径,我们需要一个与图像源相关的cid列表

<?php

    // Create associative array for images
    // Relation syntax: cid => filename
    $images = array(
        'file-1' => './src/file-1.png',
        'file-2' => './src/file-2.png',
        'file-3' => './src/file-3.png'
    );

    // Retrieve the body contents
    $body = file_get_contents('src/body.html');
然后,验证找到的源是否实际上是PHPMailer cid。还要检查我们的
$images
数组中是否存在找到的cid

            // Is this source a PHPMailer cid?
            if(preg_match('/^cid:/', $imageSRC)){

                $fileCID    = preg_replace('/^cid:/', '', $imageSRC);

                // Does the cid exist in our associative array?
                if(isset($images[$fileCID])){

                    // Update image source if we have it listed in array
                    $imageSRC = $images[$fileCID];

                }

            }
最后,重新生成图像标记并将其返回到实体,然后打印实体以在浏览器中预览输出

            return '<img' . $beforeImageSRC . 'src="' . $imageSRC . '"' . $afterImageSRC . '>';
        },
        $body);

    print $body;

?>
返回“”;
},
$body);
打印$body;
?>

要检索与每个cid关联的文件路径,我们需要一个与图像源相关的cid列表

<?php

    // Create associative array for images
    // Relation syntax: cid => filename
    $images = array(
        'file-1' => './src/file-1.png',
        'file-2' => './src/file-2.png',
        'file-3' => './src/file-3.png'
    );

    // Retrieve the body contents
    $body = file_get_contents('src/body.html');
然后,验证找到的源是否实际上是PHPMailer cid。还要检查我们的
$images
数组中是否存在找到的cid

            // Is this source a PHPMailer cid?
            if(preg_match('/^cid:/', $imageSRC)){

                $fileCID    = preg_replace('/^cid:/', '', $imageSRC);

                // Does the cid exist in our associative array?
                if(isset($images[$fileCID])){

                    // Update image source if we have it listed in array
                    $imageSRC = $images[$fileCID];

                }

            }
最后,重新生成图像标记并将其返回到实体,然后打印实体以在浏览器中预览输出

            return '<img' . $beforeImageSRC . 'src="' . $imageSRC . '"' . $afterImageSRC . '>';
        },
        $body);

    print $body;

?>
返回“”;
},
$body);
打印$body;
?>

在HTML文件的正文中,您是否有使用PHP Mailer cid的标记
或者更确切地说是
?是的,我有PHP Mailer cid…如果cid“my attach”始终与“my attach.jpg”或“my attach.png”匹配,并且文件都位于同一文件夹中,您可以轻松地遍历所有图像,这是您想要的吗?或者图像是否不总是以cid和文件位置命名?是的,通过这种方式,接收者可以查看收件箱中邮件内容的图像,但如何在发送者一侧的“已发送”框中显示图像。Ohhh在HTML文件的正文中为自己预览(如发送前一样),你有PHP Mailer cid的标记吗?是的,我有PHP Mailer cid…如果cid“my attach”总是与“my attach.jpg”或“my attach.png”匹配,并且文件都位于同一文件夹中,你可以很容易地遍历所有图像,这是你想要的吗?或者图像并非总是以cid和文件位置命名?是的,通过这种方式,接收者可以查看收件箱中邮件内容的图像,但如何在发送者端的“已发送邮件”框中显示图像。Ohhh为自己预览(如发送前)