Hi,
I took the code from the article, still the same problem.. in Outlook I get a nice embedded pic,
In Gmail- the pic is attached.
It seems there is a specific problem with Gmail displaying embedded images.
Did you manage to get a mail with embedded image to display correctly in Gmail?
I also tried the base64 method, and that also worked correctly only when the mail was opened in Outlook.
Method 1:
Set tmpEmail=##class(%Net.SMTP).%New()
Set tmpEmail.smtpserver="xyz"
Set msg=##class(%Net.MailMessage).%New()
Set msg.From="from.."
Set msg.Charset="Windows-1255"
D msg.To.Insert("to..")
Set msg.Subject="testing"
set msg.IsHTML=1
set msg.MultiPartType="related"
do msg.AttachFile("c:\xyzxyz\","a.png")
set part=msg.Parts.GetAt(1)
set part.ContentType="image/png"
set part.InlineAttachment=1 // otherwise, the default is attachment. graphic inside html
do part.Headers.SetAt("id1","Content-ID")
do msg.TextData.Write("<b>Hello< / b>, </b><font color='red'>World<font color='red'></font>!")
do msg.TextData.Write("<br/><img src='cid:id1'>")
s status= tmpEmail.Send(msg)
Method 2 base64
Set tmpEmail=##class(%Net.SMTP).%New()
Set tmpEmail.smtpserver="xyz"
Set msg=##class(%Net.MailMessage).%New()
Set msg.From="from.."
Set msg.Charset="Windows-1255"
D msg.To.Insert("to..")
Set msg.Subject="testing base64"
set msg.IsHTML=1
set msg.MultiPartType="related"
set stream=##class(%GlobalBinaryStream).%New()
do stream.Write($system.Encryption.Base64Decode("iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAADUUlEQVR42lWTWUwTURSGaUtIKY5QweISTUzceDGu0Rj1xURjTNQEE+ODGn0hPhBEQdqZztahBbrAtFih1Fprh9IBiVLLErZSU7BUoS7VqNH44ovx0S0ovdfO4Ez04cw9Ofec7/5zzr15NEnkUxSVFx8ObZ1x7nzHN6z9nOhnzOFwWCnECcKoEFbBRrrp6iF/XRvD0BoplkdTuAiIhtt3P3Fu+jJlKlkM1WoXLFjVeSnpXrC94gV3ciJp1X0L1K7+NtDfvXdpj1TmmUwm8QTfLa867T+ceWTSwO5r5b87XNaDEoBrv3p2Ai+AU1Qh5OiDGS4UXi4roAisQHBiYfJS2obAVPMyELYcGxViOIaKcLaNLXzadej5nBUBPXW6hdYW0z4RQOYUXK2tUfr8QeXL0Kn4JKEBk7QWdtrrLggJJEmoCBxVCf50qIaaa0HABFkEPZaLNnGfwPNFGV0u05Y554bvMQoBPLbxs9t9QydJpHP/KayRbsf+pG1NdgTTgDuGXa8dbS41ZtArxaQYT1WlHVqYaloGOcvJIan4X2MdViTl3vExbS+GPfXlvzzutj1LPch9HrYea59t0YIRtAAO+PQuIWYwNKikYty41Iuk/3TvMzsCB9HcQR7msgzgjZs7Z5rLQPR6PojeJW2d3oDCoG/IlwAYqlexbp/i9eB19ziuBoMoAlrR03YZ0G8+0JFhS8EjuhD6zWfuCTEjppcBOKYX1bwaqA5MM2oYZ4pBy7XjrAyY7sPqU01FcNZW/jtwZeXXVpt5u1RM4JhYzHFBddqz5/28fUU2NwngtVUbZUCE79o6x67/MYiXLiSbS8D9xp1vI7znkLvDK07A5/MiT7mzdxMMAsdMqxaiWDHkgzePigBUXy9KTfdWeVKNSjjPrvv5uKkYxszlIHX7eDLeVfkgbt30bt5eAlOOtT9nLRrI03szrOumOtcb4SrTSj2KKfr4nuUZ7kR8HFPAYXLlYqxRl43TGjjTWAhHCC1MNK/+lWA0cJLRgfsh95G/N1H136z7+BCSuHMuMEGVLo4a1XCKKcuO0WXZBw1FcNighmPWbe8jIeeJpdFiCrkHguWUyM92NBKseBut8T92bfsw66z49IyrHH2T5CvlqeCYUvL/ANIZ7+ohXSdWAAAAAElFTkSuQmCC"))
do msg.AttachStream(stream,"id1")
set part=msg.Parts.GetAt(1)
set part.ContentType="image/png"
set part.InlineAttachment=1 // otherwise, the default is attachment. graphic inside html
do part.Headers.SetAt("id1","Content-ID")
do msg.TextData.Write("<b>Hello< / b>, </b><font color='red'>World<font color='red'></font>!")
do msg.TextData.Write("<br/><img src='cid:id1'>")
s status= tmpEmail.Send(msg)
Thank you!
I will look into it.
I got it to work,
Turns out that angle brackets must be added in the Content-ID header for this to work in Gmail.
It's mentioned in this article , remark by masoudmanson.
https://stackoverflow.com/questions/41946783/gmail-blocking-small-embedd...
Thanks for helping me solve this problem! I appreciate it very much.