Встраивание изображений PNG или BMP VS JPG или GIF в ColdFusion 11 - PullRequest
3 голосов
/ 07 марта 2019

Я пробовал разные форматы изображений для отправки по электронной почте. JPG и GIF (с прозрачностью) работают нормально.

Я также попробовал этот сценарий , и он отлично работает. Однако это работает, только если изображение в формате JPG или GIF. Файлы PNG или BMP не встраиваются должным образом и отправляются как вложения, а не как почтовый контент, как объявлено contentID внутри cfmailparam.

Вот краткий пример, извлеченный из файла CFC.

<cfcomponent>
<!--- function to send email--->
<cffunction name = "send" returntype = "any">

<cfmail
to="abc@aaa.com"
from="def@bbb.com"
subject="test msg.">        
<cfmailpart type="html">
    TEST MESSAGE. <br />
    <img src="cid:embedded_image1" /><br />
    <img src="cid:embedded_image2" /><br />
    END OF MESSAGE.

    <cfset obImage1 = ImageNew("http://www.libpng.org/pub/png/img_png/pnglogo-blk-sml1.png") />
    <cfmailparam file="image1.png" contentid="embedded_image1" content="#obImage1#" disposition="inline" />

    <cfset obImage2 = ImageNew("http://www.imagemagick.org/Usage/anim_basics/rose_sparkle.gif") />
    <cfmailparam file="image2.gif" contentid="embedded_image2" content="#obImage2#" disposition="inline" />

</cfmailpart>
</cfmail>

</cffunction>

Я подозреваю, что упускаю что-то, что нужно объявить, например MIME или что-то подобное. Может кто-нибудь попробовать и понять, почему GIF работает, но PNG не работает?


UPDATE

Вот что мне показалось интересным:

Дело 1

  • Добавить type = "image / png"

Изображение включено в электронное письмо. Однако прозрачность становится черной (как переписывание).

<cfset obImage1 = ImageNew("http://www.libpng.org/pub/png/img_png/pnglogo-blk-sml1.png") />
<cfmailparam file="image1.png" 
   contentid="embedded_image1" 
   content="#obImage1#" 
   type="image/png" 
   disposition="inline" />

Дело 2

  • Добавить type = "image / png"
  • Использовать URL вместо пути в file = ".."
  • Удалить content = "# obImage1 #"

Изображение сохраняется как есть, прозрачность также сохраняется. Однако имя файла - это существующий файл, и я не могу его переименовать, потому что он получил значение из content . Но, по крайней мере, это работает.

<cfmailparam file="http://www.libpng.org/pub/png/img_png/pnglogo-blk-sml1.png" 
   contentid="embedded_image1" 
   type="image/png" 
   disposition="inline" />

Теперь вот другая проблема: Как мне сделать имя файла произвольным?

...