Sample code for 30+ languages & platforms
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

Visual FoxPro
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