server icon indicating copy to clipboard operation
server copied to clipboard

Embed images when sending HTML E-Mail

Open ChargingBulle opened this issue 7 years ago • 4 comments

external resources are not automatically loaded in sanely configured E-Mail clients.

For example in Thunderbird a warning like this will pop up: warning bar of thunderbird

the NextCloud logo is fetched from https://yourserverhere.com/core/img/logo.png?v=3D0 which is opens the door for resource based tracking.

It's not just the NextCloud logo but all image resources. For example in an mail based invite the small icons like CALENDAR ICON and PLACE ICON will not be displayed when viewed in a many E-Mail client (for example Thunderbird with default settings)

Why change this?

  • privacy (readers can be sure that the NC admin does not track them)
  • usability (readers can see the images without clicking away a warning prompt)

Is this technically possible?

  • Yes, you can embed images. For example via MIME Content-ID or via inline embedding
Technical Example Black and white image reading "Hello" is inserted into an HTML E-Mail via Content-ID. The image is base64 encoded inside the E-Mail

email with small embedded image inside

Return-path: <[email protected]>
Received: ...
Original-recipient: rfc822;[email protected]
Sender: [email protected]
To: Me <[email protected]>
From: Me <[email protected]>
Subject: Test
Message-id: <[email protected]>
Date: Sun, 13 Jan 2019 00:00:00 +0000
MIME-version: 1.0
Content-type: multipart/alternative;
 boundary=------------63E36A7002E8D6FBEB9C5425
Content-language: en-US

This is a multi-part message in MIME format.
--------------63E36A7002E8D6FBEB9C5425
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit


--------------63E36A7002E8D6FBEB9C5425
Content-Type: multipart/related;
 boundary="------------885E82E985699C9CB72624B8"


--------------885E82E985699C9CB72624B8
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <img src="cid:[email protected]" alt="">
  </body>
</html>

--------------885E82E985699C9CB72624B8
Content-Type: image/png;
 name="poclpdkelpocpgpa.png"
Content-Transfer-Encoding: base64
Content-ID: <[email protected]>
Content-Disposition: inline;
 filename="poclpdkelpocpgpa.png"

iVBORw0KGgoAAAANSUhEUgAAADgAAAASCAIAAACB04oZAAAAzUlEQVRIie2T0REDIQhEqYuC
qIdqaGaLMR9Rz1PGU+NMLpPbP0HXByKFHxF9G2BU/whqQlGsmMxeqwTNXqwIAcpxKTbjCOUO
Sj87CBptysCC7S1ATVKXiZjFvBsXQaGHN0u7ZQIUyiyGvDRldqZiBdTkHIVJbd2AUqVsYNIO
qxdbAHViTcuGO+rUEAv5GNQrtwmOPz08u0GUi+zWjoY0SYcjTHnL09fOQDv+VO4+zWXx1vkM
TMt/L3qY+aORTvaz7x0zv/7GekB36wHdrRcZX4h7tVmUbQAAAABJRU5ErkJggg==
--------------885E82E985699C9CB72624B8--

--------------63E36A7002E8D6FBEB9C5425--

ChargingBulle avatar Jan 13 '19 12:01 ChargingBulle

The images appear entirely broken for us in Gmail as well.

pirate avatar Aug 15 '19 22:08 pirate

@JavaZauber @pirate @mokken would you like to contribute a fix for this? Or do you have any pointers what is necessary to fix this? :)

jancborchardt avatar Apr 09 '20 09:04 jancborchardt

Easier alternative for developer: Not using images at all. Composition seems to be implemented with IEMailTemplate.php

narcisgarcia avatar Sep 27 '22 12:09 narcisgarcia

Unfortunately when I looked at this awhile back I found inline embeds to be an obstacle if one care's about recipients using, say, Gmail. I don't recall finding a good path forward so that effort stalled out.

Similar to: https://github.com/nextcloud/server/issues/17187#issuecomment-692551296

joshtrichards avatar Aug 12 '23 11:08 joshtrichards

Here we are in year 6 🥳

pathob avatar Jan 23 '25 07:01 pathob