DataFlex
DataFlex
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 DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoEmail
Variant vBdImage
Handle hoBdImage
String sCid
Handle hoSbHtml
Integer iNumReplaced
String sVal
String sTemp1
Boolean bTemp1
Move False To iSuccess
// 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.
Get Create (RefClass(cComChilkatEmail)) To hoEmail
If (Not(IsComObjectCreated(hoEmail))) Begin
Send CreateComObject of hoEmail
End
Set ComSubject Of hoEmail To "GetRelatedAttr example"
// Load the image data from a file into a BinData object.
Get Create (RefClass(cComChilkatBinData)) To hoBdImage
If (Not(IsComObjectCreated(hoBdImage))) Begin
Send CreateComObject of hoBdImage
End
Get ComLoadFile Of hoBdImage "qa_data/images/logo.png" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoBdImage To sTemp1
Showln sTemp1
Procedure_Return
End
// Add the image as a related item from the BinData; capture its generated Content-ID.
Get pvComObject of hoBdImage to vBdImage
Get ComAddRelatedBd Of hoEmail "logo.png" vBdImage To sCid
Get ComLastMethodSuccess Of hoEmail To bTemp1
If (bTemp1 = False) Begin
Get ComLastErrorText Of hoEmail To sTemp1
Showln sTemp1
Procedure_Return
End
// Reference the related item in the HTML body by its Content-ID.
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbHtml
If (Not(IsComObjectCreated(hoSbHtml))) Begin
Send CreateComObject of hoSbHtml
End
Get ComAppend Of hoSbHtml '<html><body><img src="cid:PLACEHOLDER_CID"/></body></html>' To iSuccess
Get ComReplace Of hoSbHtml "PLACEHOLDER_CID" sCid To iNumReplaced
Get ComGetAsString Of hoSbHtml To sTemp1
Send ComSetHtmlBody To hoEmail sTemp1
// Get the "name" attribute of the related item's Content-Type header (index 0).
Get ComGetRelatedAttr Of hoEmail 0 "Content-Type" "name" To sVal
Showln "Related item Content-Type name attribute: " sVal
// Note: The path "qa_data/images/logo.png" is a relative local filesystem path,
// relative to the current working directory of the running application.
End_Procedure