Inline images not displayed for HMTL email when having many recipients
Use case 1. Two email accounts: personal.email@company.com and newsletter@company.com (yes, same domain / email server) 2. Draft HTML email created, images are embedded as:
3. As a test, email sent FROM: newsletter@company.com and BCC TO personal.email@company.com
Results:
- Email received on personal.email@company.com
- Inline images shown as expected
4. Draft HTML email created with *exactly* the same HTML content as (2). 5. Email sent FROM; newsletter@company.com and BCC TO personal.email@company.com and around 340 other email address on the same @company.com domain.
Results:
- Email received on personal.email@company.com, and so do all other people.
- Inline images are NOT shown in the email body, but instead the broken image icon is presented.
- All images appear as attachments to the email.
Analysis on the 'sender side'
- The copy of the email in the Sent mailbox of newsletter@company.com is shown correctly: all of its +-340 BCC email addresses and the email body correctly displays the inline images.
- The copy of the email in the Sent mailbox of newsletter@company.com shows that images are referenced as expected like :
... and further down in the source the actual data as ...
2702A7729F6403F6B749C3F8
Content-Type: image/png;
name="kefbdhhlahelkdol.png"
Content-Transfer-Encoding: base64 Content-ID: <part1.33DDFB55.26FD061A@company.com> Content-Disposition: inline;
filename="kefbdhhlahelkdol.png"
iVBORw0KGgoAAAANSUhEUgAAA3QAAAFFCAYAAA...
==> From the sending side all appears to have been processed correctly by Thunderbird.
Analysis on the 'recipient side'
- People using Thunderbird do not see the inline message, nor seeing these images as attachments.
- HTML source shows the following:
... and further down ...
2702A7729F6403F6B749C3F8
Content-Type: image/png; name="kefbdhhlahelkdol.png" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="kefbdhhlahelkdol.png" Content-ID: <<part1.33DDFB55.26FD061A@companycom>>
iVBORw0KGgoAAAANSUhEUgAAA3QAAAFFCAYAAACkKa+aAA...
==> On the receiving side, all image data is available yet inline images are NOT shown.
Root cause
The Content-ID in the received email has TWICE the less then / greater than (or smaller than / larger than) characters:
Content-ID: <<part1.33DDFB55.26FD061A@company.com>>
Note the << >> formatting instead of < >. This should be:
Content-ID: <part1.33DDFB55.26FD061A@company.com>
This is confirmed by the following testcase: 1. Save the BAD email received on personal.email@company.com in step 5 as .eml 2. Edit the Content-ID, changing it from <<part1.33DDFB55.26FD061A@company.com>> to <part1.33DDFB55.26FD061A@company.com> using Notepad++ 3. Open the .eml file in Thunderbird ==> The image is shown inline as expected.
Observations
- This behaviour seems to occurs ONLY when sending it to many many recipients (in BCC).
- The draft HTML email I'm putting together is sent out for testing multiple times to myself in BCC, and a few others as well. Each time, the Content-ID reference is formatted correctly.
USER-AGENT: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101
Thunderbird/60.7.0
Wót Pieter Breugelmans
Wšykne wótegrona (3)
Are the recipients using TB blocking remote content from your domain, or do they have View/Message Body As set to anything besides Original HTML? Do they see the remote content when their account is accessed through webmail, to test if remote content is blocked by the mail provider?
The domain is not blocked from showing remote content. TB does also NOT show the option that would allow such so it is not detecting it being required which is expected as all the inline images are embedded in the HTML email itself (base64 img src). There is no remote content being loaded.
The mail provider is our own corporate email server and the emails are not leaving the domain. All recipients including myself are within that domain.
What strikes me the most is that I too face the issue, but only when being part of the +-340 other recipients. Both in that case, as well as when I'm drafting it up and sending test emails to myself, I always go through the same process and sent it from the newsletter@company.com account.
EDIT1
The key question is why in case of a sending out a 'bulk' email to many recipients, the Content-ID values get formatted as << ... >> instead of < ... >.
The process as I understand on the sender side (me) it is like this:
- Draft up the email with HTML content, embedded / inline images
- Add all recipients (BCC)
- Sent the email
In the last step, Thunderbird processes the email and transforms the embedded base64 encoded image src values to CIDs. That 'processed' email is saved into the Sent folder and shows the correct formatting as < ... >.
Is the copy of the processed email that TB saves in the Sent box an exact copy of the data that is sent to the mail server?
Wót Pieter Breugelmans
A little bump. :-)