PureBasic
PureBasic
Add Image to HTML Email
See more Email Object Examples
Demonstrates how to add an image to an HTML email.Chilkat PureBasic Downloads
IncludeFile "CkEmail.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
email.i = CkEmail::ckCreate()
If email.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkEmail::setCkFrom(email, "Matt <matt@example.com>")
CkEmail::ckAddTo(email,"Joe","joe@example.com")
CkEmail::setCkSubject(email, "This is a test")
; Add an HTML body with an image tag.
html.s = "<html><body><p>Test with image:</p><p><img src=" + Chr(34) + "/wildlife/starfish.jpg" + Chr(34) + " /></p></body></html>"
CkEmail::ckSetHtmlBody(email,html)
; Add the image data from a file. The pathInHtml must match the value of the img tag's src attribute.
pathInHtml.s = "/wildlife/starfish.jpg"
; The actual path of the JPG file in the local filesystem:
pathOnDisk.s = "qa_data/jpg/starfish20.jpg"
success = CkEmail::ckAddRelatedFile2(email,pathOnDisk,pathInHtml)
If success = 0
Debug CkEmail::ckLastErrorText(email)
CkEmail::ckDispose(email)
ProcedureReturn
EndIf
; The email is now properly constructed with an image that will be visible in the HTML.
; In this example, we'll save it to a .eml file and verify by loading the .eml in an email client such as Mozilla Thunderbird.
success = CkEmail::ckSaveEml(email,"qa_output/starfish.eml")
; Also, we can examine the MIME to understand how the image data in the MIME is associated with the img tag in the HTML.
; It is the Content-Location header value that must match the value of the img tag's src attribute.
Debug CkEmail::ckGetMime(email)
; Here's the MIME:
; MIME-Version: 1.0
; Date: Thu, 26 May 2022 11:09:12 -0500
; Message-ID: <B1D499F74F533E287BFE04BBD79AAF1D973B61E3@SLICE>
; Content-Type: multipart/related; boundary="------------000205040704010904010706"
; X-Priority: 3 (Normal)
; From: Matt <matt@example.com>
; To: Joe <joe@example.com>
; Subject: This is a test
;
; --------------000205040704010904010706
; Content-Type: text/html; charset=us-ascii
; Content-Transfer-Encoding: 7bit
;
; <html><body><p>Test with image:</p><p><img src="/wildlife/starfish.jpg" /></p></body></html>
; --------------000205040704010904010706
; Content-Type: image/jpeg; name="/wildlife/starfish.jpg"
; Content-Transfer-Encoding: base64
; Content-Disposition: inline; filename="/wildlife/starfish.jpg"
; Content-Location: /wildlife/starfish.jpg
;
; /9j/4AAQSkZJRgABAQEASABIAAD//gAmRmlsZSB3cml0dGVuIGJ5IEFkb2JlIFBob3Rvc2hvcD8g
; NC4w/9sAQwAQCwwODAoQDg0OEhEQExgoGhgWFhgxIyUdKDozPTw5Mzg3QEhcTkBEV0U3OFBtUVdf
; YmdoZz5NcXlwZHhcZWdj/9sAQwEREhIYFRgvGhovY0I4QmNjY2NjY2NjY2NjY2NjY2NjY2NjY2Nj
; Y2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2Nj/8IAEQgAFAAUAwERAAIRAQMRAf/EABcAAAMBAAAA
; AAAAAAAAAAAAAAIDBAX/xAAYAQADAQEAAAAAAAAAAAAAAAABAgMEAP/aAAwDAQACEAMQAAAB2kZY
; NNEijWKddfTmLgALWH//xAAbEAACAgMBAAAAAAAAAAAAAAABAgMRAAQSE//aAAgBAQABBQL0XqN+
; pM2aqJGMiqFFCyg7z//EABwRAAICAgMAAAAAAAAAAAAAAAERAAIQIQMSUf/aAAgBAwEBPwHqU5aq
; Axx+y1tMQl4elj//xAAcEQEAAQUBAQAAAAAAAAAAAAABEQACEBIhA1H/2gAIAQIBAT8B3Bhqy7Zc
; enyiwmGgDhiOzj//xAAdEAABAwUBAAAAAAAAAAAAAAABAAIREBIhIkFR/9oACAEBAAY/ArZyn+Cg
; xtxWuJaoCnqDuin/xAAcEAABBAMBAAAAAAAAAAAAAAABABEhYRAxQVH/2gAIAQEAAT8hkEwPUUR9
; DYfE4nxtRpIkBTsayuALIiuY/9oADAMBAAIAAwAAABDWPTsf/8QAGhEAAwADAQAAAAAAAAAAAAAA
; AAEREDFBIf/aAAgBAwEBPxC0DVPcWm+Ce4OesrkE6bjH/8QAGBEBAQEBAQAAAAAAAAAAAAAAAREA
; QRD/2gAIAQIBAT8QahMiOc8YgSrnTY3ELclHXn//xAAcEAEBAAIDAQEAAAAAAAAAAAABEQAhMUFx
; EFH/2gAIAQEAAT8Qn3igmSZSj+c4N4zapMy9IjFV98wncN2iuLFsCEbDGxQkI6RO/n//2Q==
;
; --------------000205040704010904010706--
CkEmail::ckDispose(email)
ProcedureReturn
EndProcedure