Sample code for 30+ languages & platforms
PowerBuilder

Add, Remove, Update MIME Header Fields

See more MIME Examples

Demonstrates how to add, remove, or update the content of MIME header fields.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Mime
integer li_BAllOccurrences
oleobject loo_MpRelated
oleobject loo_PJpg

li_Success = 0

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

loo_Mime = create oleobject
li_rc = loo_Mime.ConnectToNewObject("Chilkat.Mime")
if li_rc < 0 then
    destroy loo_Mime
    MessageBox("Error","Connecting to COM object failed")
    return
end if

// The contents of this MIME file are shown below, 
// and is also available at https://www.chilkatsoft.com/sampleMime.txt
li_Success = loo_Mime.LoadMimeFile("qa_data/mime/sampleMime.txt")
if li_Success = 0 then
    Write-Debug loo_Mime.LastErrorText
    destroy loo_Mime
    return
end if

// The MIME used in this example has the following nested structure
// 
// multipart/alternative
//     text/plain
//     multipart/related
//         text/html
//         image/jpeg
// 

// Adding a top-level MIME header is easy.
loo_Mime.AddHeaderField("hello-world","Hello World!")
// If a header field of the same name already exists, the AddHeaderField
// method adds a duplicate.
loo_Mime.AddHeaderField("Subject","This is the 2nd Subject header.")
Write-Debug loo_Mime.GetEntireHead()
Write-Debug "-"

// The top-level header now looks like this:
// 
// 	Subject: Test email.
// 	Content-Type: multipart/alternative; boundary="------------DB171738719FB06D67DEBAA0"
// 	MIME-Version: 1.0
// 	hello-world: Hello World!
// 	Subject: This is the 2nd Subject header.
// 

// The RemoveHeaderField method can remove the 1st occurrance, or all occurrences.
li_BAllOccurrences = 1
// Remove all occurrences of the Subject header;
loo_Mime.RemoveHeaderField("Subject",li_BAllOccurrences)
Write-Debug loo_Mime.GetEntireHead()
Write-Debug "-"

// After removing all Subject header fields, the top-level header now looks like this:
// 
// Content-Type: multipart/alternative; boundary="------------DB171738719FB06D67DEBAA0"
// MIME-Version: 1.0
// hello-world: Hello World!
// 

// The content of a header field can be updated by calling SetHeaderField.
// If the header field does not already exist, it is added.  Otherwise it is updated.
// Note: The order of header fields SHOULD never matter.
loo_Mime.SetHeaderField("hello-world","Goodbye World.")
Write-Debug loo_Mime.GetEntireHead()
Write-Debug "-"

// Now we have:
// 
// 	Content-Type: multipart/alternative; boundary="------------DB171738719FB06D67DEBAA0"
// 	MIME-Version: 1.0
// 	hello-world: Goodbye World.
// 

// To add/update/delete header fields in sub-parts, navigate to
// the sub-part and do the same..

loo_MpRelated = create oleobject
li_rc = loo_MpRelated.ConnectToNewObject("Chilkat.Mime")

loo_Mime.PartAt(1,loo_MpRelated)

loo_PJpg = create oleobject
li_rc = loo_PJpg.ConnectToNewObject("Chilkat.Mime")

loo_MpRelated.PartAt(1,loo_PJpg)

// Add a header to the image/jpeg sub-header.
loo_PJpg.SetHeaderField("CustomHeader","This is the custom header value.")

// View the entire MIME..
Write-Debug loo_Mime.GetMime()

// --------------------------------------------------------------
// --------------------------------------------------------------
// The MIME sample file loaded at the beginning of this example
// contains the following MIME:

// Subject: Test email.
// Content-Type: multipart/alternative;
// 	boundary="------------DB171738719FB06D67DEBAA0"
// MIME-Version: 1.0
// 
// --------------DB171738719FB06D67DEBAA0
// Content-Type: text/plain; charset="utf-8"; format=flowed
// Content-Transfer-Encoding: 7bit
// 
// This is a test.
// 
// --------------DB171738719FB06D67DEBAA0
// Content-Type: multipart/related;
// 	boundary="------------A940F1230E6F0105F03DB2CB"
// 
// --------------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.&nbsp; <img src="cid:part1.E16AE3B4.1505C436@chilkatsoft.com" height="20" width="20"></p>
//   </body>
// </html>
// 
// --------------A940F1230E6F0105F03DB2CB
// Content-Type: image/jpeg; name="starfish20.jpg"
// Content-Transfer-Encoding: base64
// Content-ID: <part1.E16AE3B4.1505C436@chilkatsoft.com>
// Content-Disposition: inline; filename="starfish20.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==
// 
// --------------A940F1230E6F0105F03DB2CB--
// 
// --------------DB171738719FB06D67DEBAA0--
// 


destroy loo_Mime
destroy loo_MpRelated
destroy loo_PJpg