Have you ever opened mail and noticed, that text is shown correctly, but images are not loaded? And your mail client gives you message: that images were blocked, and you need to click to open it.
This problem is common. It is so common, that it’s hard to find message with images, that loads correctly (unless you mark sender e-mail as trusted). It is so common, that many people I talked about it don’t notice it anymore, and other thinks, that the only solution is to avoid using images.
But reason why and solution is very simple.
Reason
Emails are sent as HTML. So many people treats it as a normal webpage – but they aren’t.
In normal webpage if you want to add image, you puts link to it in <img> tag. And for web browser it doesn’t matter, if it is on the same server or not. So in emails the easiest solution is to upload image to any webserver and put full url inside <img> tag inside email.
But this behavior is great opportunity for spammers. If spammer sends spam, it would like to know if it was readed. Then he know to which email is worth sending more spam. So he could add to each message <img> with unique url, but all pointing to his server. When someone opens mail, also opens image – which means connecting to his server. That’s why mail programs blocks images.
Solution
To send email with images you need to add these as attachments. It solves problem, because image will be sended with email, without any need to ask other server.
Adding attachment, you can specify ContentID (cid). it will be use as url inside mail’s html.
<img src="cid:your_content_id" alt="">
Also don’t forget to set this attachment as inline – so it won’t show your receiver on attachment’s list.
You also could use data: url with base64 encoding, but this isn’t supported in all mail programs, especially in Microsoft Outlook. As I said earlier, email is not a webpage and you can use only small part of browser’s capabilities if you want to be sure, that everyone will reads your message correctly.