我正在构建一个发送内嵌图像的html电子邮件的网站,我知道Swiftmailer可以使用$ message->嵌入嵌入内嵌图像(Swift_Image :: fromPath(''))
但是我开发了拖放式电子邮件生成器,用户可以在其中设计电子邮件,包含任何图像,然后发送电子邮件。 那么我如何使用Swifmailer自动嵌入图像。 PLS。我真的需要帮助已经研究了好几天。
答案 0 :(得分:0)
您可以使用Swift_Image :: newInstance嵌入图像而不从磁盘加载它。
http://swiftmailer.org/docs/messages.html#embedding-dynamic-content
<?php
// Create your file contents in the normal way, but don't write them to disk
$img_data = create_my_image_data();
// Create the message
$message = Swift_Message::newInstance('My subject');
// Embed images into message and collect references
$images = [
"image1.jpg" => $message->embed(Swift_Image::newInstance($img1_data, 'image1.jpg', 'image/jpeg')),
"image2.jpg" => $message->embed(Swift_Image::newInstance($img2_data, 'image2.jpg', 'image/jpeg'))
];
// Replace placeholder urls with embedded image reference
// eg <img src="image1.jpg"> => <img src="cid:XXXXX">
$userHTML = str_tr($userHTML, $images);
// Set the body
$message->setBody($userHTML,
'text/html' // Mark the content-type as HTML
);
$userHTML
变量将是用户生成的带有带占位符网址的图片代码的HTML。 embed将创建多部分数据,并将$images
数组中映射的引用返回到占位符url字符串。 str_tr
步骤将使用cid:XXXX资源字符串替换占位符字符串。