cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
CW
Post Patron
Post Patron

Embedded Image in Email (an oldy but a goody)

I am trying to simply include my or someone else's image in an email. I've tried several techniques and it's not difficult to embed in Outlook, but not everyone uses Outlook (🙄), I don't always use it. Regardless, this image needs to be visible to:

  • ANYONE, whether it's Outlook, Microsoft Mail, Gmail or whatever. It's 2021.

For example, here is the code I'm using:

Email1.jpg

And here is the result in Outlook:

Email2.jpg

 

And here is the result in Microsoft mail (or any other email app):

Email3.jpg

You see the person's image is missing if it's not Outlook. HOWEVER, strangely enough (facetious), the Microsoft Flow image is plainly visible in any email. That doesn't seem to be an issue. Hmmm.

 

Yes I've used other techniques such as a direct link to an image in a SharePoint library, to which I obviously have access but the image doesn't show in other email apps either.

I've used variables: 

 

<img src="data&colon;image/jpeg;base64,@{body('Get_file_content_using_path_-_Another_Method')['body']['$content']}" alt="My Image"/> 

 

How is this possible in 2021 that it is really that hard to add a simple little image to display in non-Outlook email clients??? I've now spent two days doing this and continually handcuffed to only use Outlook.

Not very impressed.

1 ACCEPTED SOLUTION

Accepted Solutions
Paulie78
Super User III
Super User III

So this is my completely different method, which does work on any email client, but it does require the use of a premium Power Automate license:

 

  1. I created a new document library on SharePoint and uploaded a bunch of images to it
  2. I changed the view to expose the ID of the each uploaded image, like this:

Paulie78_0-1613433716679.png

Next I created a really simple flow which uses a HTTP trigger as it's action:

https://ibb.co/0My36Ph

Http-Image-Server.png

The HTTP trigger action makes use of the relative path functionality:

Paulie78_1-1613433911759.png

So now you can use the HTTP Get URL, which in my case is:

https://prod-48.westeurope.logic.azure.com/workflows/59c5a92ccebe4f97adfd52eb6cf213a8/triggers/manual/paths/invoke/picID/1?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=DNrMaouJY_Sifq8DRvbeWcuDl8TGKgeFpvP9NxDmOcQ

 

The ID of the image is in the URL and can simply be changed to reflect the ID of the picture I want to be served to the client.

You can then include this URL in your IMG HTML tag and it will display the image. 

So if you copy that URL above into your browser and modify the picID it will serve you a different image. This will be accessible from anywhere without having to authenticate. 

Make sense?

View solution in original post

23 REPLIES 23
abm
Super User III
Super User III

Hi @CW 

 

Is your outlook authentication is same as SharePoint? Try setting a public image from a website and see whether that works for all other emails. If then the issue is with SharePoint authentication for other email clients.

 

Thanks



Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blogPower Automate Video Tutorials
CW
Post Patron
Post Patron

Hi abm. Yes all the correct and same authentication.

I even attempted calling a url from Google docs and Dropbox.

Maybe I should pull my image from the fancy spot Microsoft uses since those graphics flawlessly fly through every e-mail test.

Paulie78
Super User III
Super User III

I had a look at this, and found a way of displaying the picture in any client, but it needs PA Premium. Do you have that?

abm
Super User III
Super User III

Hi @CW 

 

Thanks for your reply. Not sure what you meant by same authentication. What I was asking is your SharePoint login authentication is same as your outlook domain as a single sign on. That means outlook automatically authenticated hence it can see the image from SharePoint. For google email or emails its not on same domain so it won't show because under lying image need authentication to display.  A good test is to refer a public image from a website in all of your emails and see whether that displays or not. That proves why only the outlook email is showing the image and rest is not due to authentication issues. Thats my understanding.



Did I answer your question? Mark my post as a solution!

If you liked my response, please consider giving it a thumbs up


Proud to be a Flownaut!

Learn more from my blogPower Automate Video Tutorials

Hi Paulie. Thanks for your response 😁

Of course it does, why wouldn't it? Another Microsoft gotcha? I have Microsoft 365 Business Standard and don't even know what PA Premium is.  

So, are you alleging MSFT actually spent more time coding in blockages to not allow an image to be properly embedded so that it could be displayed in an email app other than Outlook?????????

Paulie78
Super User III
Super User III

I'm not suggesting anything - although the goal is simple "Displaying an image in an email". The details of that goal are quite complicated.

 

By premium, I meant - Power Automate Premium (as in one of the premium plans). But as you don't have that, then my solution won't work for you.

CW
Post Patron
Post Patron

Hello abm. Yes, understood. Yes an external image shows fine. That's all well and good. I need my image to be embedded PERIOD. There has to be a way of embedding an image in an email!!! You can do it fine when constructing an email in Outlook and the image shows up in any email app. 

Paulie78
Super User III
Super User III

@CW essentially you are obviously correct. I found an unlisted video I did for another user on this forum, their requirement was slightly more complex than yours, but it's the same fundamental problem, take a look at this video:

https://www.youtube.com/watch?v=EsrV7A-23w4&feature=youtu.be

I think the HTTP request to SharePoint may solve your issue.

Hey Paulie, thanks. 

You said it!!! The goal is simple but typically with all things MSFT the solution is either

  • a workaround,
  • a hack,
  • not available till you add it to UserVoice for several years then they hope you give up and move on,
  • too and needlessly complicated (as you mentioned), or
  • requires a MAGIC PREMIUM license.

My MAGIC PREMIUM license will be to cancel. I really don't need this aggravation and frustration to simply have an embedded image in an email in 2021 no less.

It's ludicrous, inane and analogous to McDonalds requiring the consumer to go find a farm with cows, learn how to butcher cows then build your own kitchen in order to cook it provided you have their name on the building. 

But at least we now have A.I. and 3D capabilities plus connections to Trello.

I thought working with the federal government was bad, this takes the cake.

Thanks for the thought and the solution though. 👍

Paulie78
Super User III
Super User III

😐 It's not as bad as having to butcher a cow. If we focus on the solution we can get you what you want pretty quickly. 

Haha, thanks Paulie!! 👍

That's all I ever run into with their tech. It's always something. 

Anyway, the last thing I'm going to try after three days of attempts is this link: Embed images in e-mail's body using Microsoft Flow • Tomasz Poszytek, Business Applications MVP

Paulie78
Super User III
Super User III

Yes, that should work, same technique I used in the video I linked to. But it’s also the same as what you’ve already done more or less.

Yes perhaps but that video doesn't include doing it in Power Automate and I'm a quite a bit out of my league here. I'll try the other video here: Microsoft Flow: How to embed an image in an email | Siôn J Lewis (sjlewis.com)

I don't think I set it up properly.

Well that worked, for a couple of times then all I got was a page of blob.  I went back and copied the straight code then it worked again (??????)

Anyway at least I've made some headway. Thanks for your responses!! If you have anything else you'd like to add, I'm all ears.

Cheers

Paulie78
Super User III
Super User III

My guess when you got a page of blob is that it was a different image type. I.e the content type was wrong.

I’m going to write my solution up tomorrow (which is completely different approach)

Paulie78
Super User III
Super User III

So this is my completely different method, which does work on any email client, but it does require the use of a premium Power Automate license:

 

  1. I created a new document library on SharePoint and uploaded a bunch of images to it
  2. I changed the view to expose the ID of the each uploaded image, like this:

Paulie78_0-1613433716679.png

Next I created a really simple flow which uses a HTTP trigger as it's action:

https://ibb.co/0My36Ph

Http-Image-Server.png

The HTTP trigger action makes use of the relative path functionality:

Paulie78_1-1613433911759.png

So now you can use the HTTP Get URL, which in my case is:

https://prod-48.westeurope.logic.azure.com/workflows/59c5a92ccebe4f97adfd52eb6cf213a8/triggers/manual/paths/invoke/picID/1?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=DNrMaouJY_Sifq8DRvbeWcuDl8TGKgeFpvP9NxDmOcQ

 

The ID of the image is in the URL and can simply be changed to reflect the ID of the picture I want to be served to the client.

You can then include this URL in your IMG HTML tag and it will display the image. 

So if you copy that URL above into your browser and modify the picID it will serve you a different image. This will be accessible from anywhere without having to authenticate. 

Make sense?

View solution in original post

Actually it turned out to be a weird buggy action by Power Automate or Edge.

So I followed the procedure here; Microsoft Flow: How to embed an image in an email | Siôn J Lewis (sjlewis.com) and it worked. Then I tried playing with width and height settings which somehow broke the variable function.

I narrowed it down to no matter how many times you rebuild the function then add the 'File Content' item to the function between the  , and " it would no longer output the proper value: 

<img src="data&colon;image/jpeg;base64,@{body('Get_file_content_using_path')['$content']}" alt="My Image" />

It kept kicking out the "$content' item and used "$output" instead. ????? So all you get is blob.

Then I manually entered the value rather than going back and forth with 'Function' and "Add Dynamic Content' then boom, back to the original positive test. So it does work.

There was definitely. a glitch in the matrix on this one between Edge and web version of Power Automate. 

I didn't test clearing the cache but did save, leave go back in, rebuild and still it wouldn't work as it originally did.

Seems you can only use dynamic content once effectively . Anything subsequent will break. Excellent.

Wow that's quite a complex solution. Good work!  However, I'm just learning this stuff so these type of solutions are more easily understood when you lay them out like that.

 

But, aren't there solutions like all this provided by Microsoft? Seems like so much work to add an image to an email PLUS, requiring a "\'Premium' license.

Thanks for sharing.

CW

I have tried this out and it looked like it worked until I tried clicking the link that it created which unfortunately did not work:

https://prod-65.westus.logic.azure.com/workflows/3d8f1786d5a9492e8170296e308049b4/triggers/manual/pa...

 

I tried clicking yours and it worked just fine and brought up the connected image. Any idea what I might have missed based on the error it brings up?

 

Additionally, it showed the flow as failing each time it was triggered:

 

ET11758_0-1616618339736.png

 

Helpful resources

Announcements
MPA User Group

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group

MSFTBizAppsLaunchEvent

Experience what’s next for Power Virtual Agents

See the latest Power Automate innovations, updates, and demos from the Microsoft Business Applications Launch Event.

New Super Users

Meet the Power Automate Super Users!

Many congratulations to the Season 1 2021 Flownaut Crew!

Power Platform ISV STudio

Power Platform ISV Studio

ISV Studio is the go-to Power Platform destination for ISV’s to monitor & manage applications post-AppSource publish.

Users online (55,364)