Sample code for 30+ languages & platforms
PowerBuilder

Send HTML Email with CSS as Related Item using Content-Location

See more SMTP Examples

Demonstrates how to compose an HTML email with an external CSS file included as a related item and referenced by Content-Location.

Some email clients display embedded (related) content best using CID's (Content-IDs), whereas other email clients display related content best by Content-Location. The choice you make may depend on the software used by the intended recipient of your email. (Does' the recipient read email on an iPhone? Android? Outlook? GMail? Thunderbird? etc.)

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Mailman
oleobject loo_Email
oleobject loo_SbCss
integer li_BCrlf
string ls_FilenameInHtml
oleobject loo_SbHtml

li_Success = 0

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

// The mailman object is used for sending and receiving email.
loo_Mailman = create oleobject
li_rc = loo_Mailman.ConnectToNewObject("Chilkat.MailMan")
if li_rc < 0 then
    destroy loo_Mailman
    MessageBox("Error","Connecting to COM object failed")
    return
end if

// Use your SMTP server hostname.  This example uses office365, but it could be any SMTP server..
loo_Mailman.SmtpHost = "outlook.office365.com"
loo_Mailman.SmtpPort = 587
loo_Mailman.StartTLS = 1

// Set the SMTP login/password
loo_Mailman.SmtpUsername = "OFFICE365-SMTP-LOGIN"
loo_Mailman.SmtpPassword = "OFFICE365-SMTP-PASSWORD"

// Create a new email object
loo_Email = create oleobject
li_rc = loo_Email.ConnectToNewObject("Chilkat.Email")

loo_Email.Subject = "HTML Email with embedded CSS"
loo_Email.From = "Chilkat Support <my-office365-user@mydomain.com>"
loo_Email.AddTo("Chilkat Support","support@chilkatsoft.com")

loo_SbCss = create oleobject
li_rc = loo_SbCss.ConnectToNewObject("Chilkat.StringBuilder")

li_BCrlf = 1
loo_SbCss.AppendLine("body {",li_BCrlf)
loo_SbCss.AppendLine("    background-color: powderblue;",li_BCrlf)
loo_SbCss.AppendLine("}",li_BCrlf)
loo_SbCss.AppendLine("h1 {",li_BCrlf)
loo_SbCss.AppendLine("    color: blue;",li_BCrlf)
loo_SbCss.AppendLine("}",li_BCrlf)
loo_SbCss.AppendLine("p {",li_BCrlf)
loo_SbCss.AppendLine("    color: red;",li_BCrlf)
loo_SbCss.AppendLine("}",li_BCrlf)

// The filenameInHtml is what should exists within the HTML (in the href atribute)
ls_FilenameInHtml = "styles.css"
// Call AddRelatedString2 to use Content-Location.
loo_Email.AddRelatedString2(ls_FilenameInHtml,loo_SbCss.GetAsString(),"utf-8")

loo_SbHtml = create oleobject
li_rc = loo_SbHtml.ConnectToNewObject("Chilkat.StringBuilder")

loo_SbHtml.AppendLine("<!DOCTYPE html>",li_BCrlf)
loo_SbHtml.AppendLine("<html>",li_BCrlf)
loo_SbHtml.AppendLine("<head>",li_BCrlf)
loo_SbHtml.AppendLine("  <link rel=~"stylesheet~" href=~"styles.css~">",li_BCrlf)
loo_SbHtml.AppendLine("</head>",li_BCrlf)
loo_SbHtml.AppendLine("<body>",li_BCrlf)
loo_SbHtml.AppendLine("",li_BCrlf)
loo_SbHtml.AppendLine("<h1>This is a heading</h1>",li_BCrlf)
loo_SbHtml.AppendLine("<p>This is a paragraph.</p>",li_BCrlf)
loo_SbHtml.AppendLine("",li_BCrlf)
loo_SbHtml.AppendLine("</body>",li_BCrlf)
loo_SbHtml.AppendLine("</html>",li_BCrlf)

loo_Email.SetHtmlBody(loo_SbHtml.GetAsString())

li_Success = loo_Mailman.SendEmail(loo_Email)
if li_Success <> 1 then
    Write-Debug loo_Mailman.LastErrorText
else
    Write-Debug "Mail Sent!"
end if



destroy loo_Mailman
destroy loo_Email
destroy loo_SbCss
destroy loo_SbHtml