Visual FoxPro
Visual FoxPro
Build a multipart/related MIME Message
See more MIME Examples
Demonstrates how to construct a multipart/related MIME message containing HTML and a related JPG image.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loMime
LOCAL loCrypt
LOCAL loSbContentId
LOCAL loSbHtml
LOCAL lnNumReplacements
LOCAL loHtmlMime
LOCAL loFac
LOCAL loJpgBytes
LOCAL loJpgMime
LOCAL loSbContentIdHdr
lnSuccess = 0
* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
* Start with an empty MIME object...
loMime = CreateObject('Chilkat.Mime')
* Initialize it as multipart/related.
loMime.NewMultipartRelated()
* Set a top-level MIME header field.
loMime.SetHeaderField("Subject","Test HTML email with JPG image.")
* Generate a Content-ID. This will contain random data that will allow
* the HTML's "img" tag to reference the image part in the MIME.
loCrypt = CreateObject('Chilkat.Crypt2')
loCrypt.EncodingMode = "hex"
loSbContentId = CreateObject('Chilkat.StringBuilder')
loSbContentId.Append("part1.")
loSbContentId.Append(loCrypt.GenRandomBytesENC(4))
loSbContentId.Append(".")
loSbContentId.Append(loCrypt.GenRandomBytesENC(4))
loSbContentId.Append("@chilkatsoft.com")
* Create the HTML body.
loSbHtml = CreateObject('Chilkat.StringBuilder')
loSbHtml.Append("<html><head>" + CHR(13) + CHR(10))
loSbHtml.Append('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' + CHR(13) + CHR(10))
loSbHtml.Append(" </head>" + CHR(13) + CHR(10))
loSbHtml.Append(' <body bgcolor="#FFFFFF" text="#000000">' + CHR(13) + CHR(10))
loSbHtml.Append(' <p>This is a test. <img src="cid:CONTENT_ID" height="20" width="20"></p>' + CHR(13) + CHR(10))
loSbHtml.Append(" </body>" + CHR(13) + CHR(10))
loSbHtml.Append("</html>" + CHR(13) + CHR(10))
lnNumReplacements = loSbHtml.Replace("CONTENT_ID",loSbContentId.GetAsString())
* Create the HTML MIME part.
loHtmlMime = CreateObject('Chilkat.Mime')
loHtmlMime.SetBodyFromHtml(loSbHtml.GetAsString())
loHtmlMime.Encoding = "8bit"
loHtmlMime.Charset = "utf-8"
* Load our JPG image from a file.
loFac = CreateObject('Chilkat.FileAccess')
loJpgBytes = loFac.ReadEntireFile("qa_data/jpg/starfish20.jpg")
* Create an image/jpeg MIME part.
loJpgMime = CreateObject('Chilkat.Mime')
loJpgMime.SetBodyFromBinary(loJpgBytes)
* Setting the following properties has the effect of adding
* the Content-Type, Content-Transfer-Encoding, and Content-Disposition header fields.
* These header fields could also be set via the SetHeaderField method, in which case
* the values of the affected properties would be updated.
loJpgMime.ContentType = "image/jpeg"
loJpgMime.Name = "starfish20.jpg"
loJpgMime.Encoding = "base64"
loJpgMime.Disposition = "inline"
loJpgMime.Filename = "starfish20.jpg"
loSbContentIdHdr = CreateObject('Chilkat.StringBuilder')
loSbContentIdHdr.Append("<CONTENT_ID>")
lnNumReplacements = loSbContentIdHdr.Replace("CONTENT_ID",loSbContentId.GetAsString())
loJpgMime.SetHeaderField("Content-ID",loSbContentIdHdr.GetAsString())
* Add both parts as children of the multipart/related
loMime.AppendPart(loHtmlMime)
loMime.AppendPart(loJpgMime)
? loMime.GetMime()
* --------------------------------------------------------------
* --------------------------------------------------------------
* This example builds the following MIME message. The boundary
* and Content-ID strings contain random data and will be different.
* Content-Type: multipart/related; boundary="------------A940F1230E6F0105F03DB2CB"
* Subject: Test HTML email with JPG image.
*
* --------------A940F1230E6F0105F03DB2CB
* Content-Type: text/html; charset="utf-8"
* Content-Transfer-Encoding: 8bit
*
* <html><head>
* <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
* </head>
* <body bgcolor="#FFFFFF" text="#000000">
* <p>This is a test. <img src="cid:part1.E16AE3B4.1505C436@chilkatsoft.com" height="20" width="20"></p>
* </body>
* </html>
*
* --------------A940F1230E6F0105F03DB2CB
* Content-Transfer-Encoding: base64
* Content-Type: image/jpeg; name="starfish20.jpg"
* Content-Disposition: inline; filename="starfish20.jpg"
* Content-ID: <part1.E16AE3B4.1505C436@chilkatsoft.com>
*
* /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==
*
* --------------A940F1230E6F0105F03DB2CB--
*
RELEASE loMime
RELEASE loCrypt
RELEASE loSbContentId
RELEASE loSbHtml
RELEASE loHtmlMime
RELEASE loFac
RELEASE loJpgMime
RELEASE loSbContentIdHdr