使用swiftmailer

时间:2015-08-12 18:35:59

标签: symfony swiftmailer

我正在构建一个发送内嵌图像的html电子邮件的网站,我知道Swiftmailer可以使用$ message->嵌入嵌入内嵌图像(Swift_Image :: fromPath(''))

但是我开发了拖放式电子邮件生成器,用户可以在其中设计电子邮件,包含任何图像,然后发送电子邮件。 那么我如何使用Swifmailer自动嵌入图像。 PLS。我真的需要帮助已经研究了好几天。

1 个答案:

答案 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资源字符串替换占位符字符串。