Visual FoxPro
Visual FoxPro
Get a Header Attribute of a Related Item
See more Email Object Examples
Demonstrates the Chilkat Email.GetRelatedAttr method, which returns a header-field attribute value from a header field of the Nth related item. The first argument is the zero-based related-item index, the second names a header field, and the third names an attribute within it. This example loads an image from a file into a BinData object, adds it as a related item with AddRelatedBd (capturing the generated Content-ID and referencing it from the HTML), then reads the name attribute of the related item's Content-Type header.
Background: Related items (inline images, style sheets) are MIME parts whose headers may carry named parameters — for instance
Content-Type: image/png; name="logo.png". Because an image is binary, it is loaded into a BinData object (here from a file) and added with AddRelatedBd, rather than being treated as text. GetRelatedAttr then extracts one named attribute from a chosen header of a specific related part, the related-item analogue of GetAttachmentAttr, so you don't have to parse the raw header yourself.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loEmail
LOCAL loBdImage
LOCAL lcCid
LOCAL loSbHtml
LOCAL lnNumReplaced
LOCAL lcVal
lnSuccess = 0
* Demonstrates the GetRelatedAttr method, which returns a header-field attribute value
* from a header field of the Nth related item. The first argument is the zero-based related-item
* index, the second is the header field name, and the third is the attribute name.
loEmail = CreateObject('Chilkat.Email')
loEmail.Subject = "GetRelatedAttr example"
* Load the image data from a file into a BinData object.
loBdImage = CreateObject('Chilkat.BinData')
lnSuccess = loBdImage.LoadFile("qa_data/images/logo.png")
IF (lnSuccess = 0) THEN
? loBdImage.LastErrorText
RELEASE loEmail
RELEASE loBdImage
CANCEL
ENDIF
* Add the image as a related item from the BinData; capture its generated Content-ID.
lcCid = loEmail.AddRelatedBd("logo.png",loBdImage)
IF (loEmail.LastMethodSuccess = 0) THEN
? loEmail.LastErrorText
RELEASE loEmail
RELEASE loBdImage
CANCEL
ENDIF
* Reference the related item in the HTML body by its Content-ID.
loSbHtml = CreateObject('Chilkat.StringBuilder')
loSbHtml.Append('<html><body><img src="cid:PLACEHOLDER_CID"/></body></html>')
lnNumReplaced = loSbHtml.Replace("PLACEHOLDER_CID",lcCid)
loEmail.SetHtmlBody(loSbHtml.GetAsString())
* Get the "name" attribute of the related item's Content-Type header (index 0).
lcVal = loEmail.GetRelatedAttr(0,"Content-Type","name")
? "Related item Content-Type name attribute: " + lcVal
* Note: The path "qa_data/images/logo.png" is a relative local filesystem path,
* relative to the current working directory of the running application.
RELEASE loEmail
RELEASE loBdImage
RELEASE loSbHtml