Sample code for 30+ languages & platforms
Lianja

Send HTML Email with External CSS as Related Item

See more SMTP Examples

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

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

// 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.
loMailman = createobject("CkMailMan")

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

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

// Create a new email object
loEmail = createobject("CkEmail")
loEmail.Subject = "HTML Email with embedded CSS"
loEmail.From = "Chilkat Support <my-office365-user@mydomain.com>"
loEmail.AddTo("Chilkat Support","support@chilkatsoft.com")

loSbCss = createobject("CkStringBuilder")
llBCrlf = .T.
loSbCss.AppendLine("body {",llBCrlf)
loSbCss.AppendLine("    background-color: powderblue;",llBCrlf)
loSbCss.AppendLine("}",llBCrlf)
loSbCss.AppendLine("h1 {",llBCrlf)
loSbCss.AppendLine("    color: blue;",llBCrlf)
loSbCss.AppendLine("}",llBCrlf)
loSbCss.AppendLine("p {",llBCrlf)
loSbCss.AppendLine("    color: red;",llBCrlf)
loSbCss.AppendLine("}",llBCrlf)

// It's possible to add a CSS file directly by calling AddRelatedFile.
// This example will add the CSS from a string.
lcFilenameInHtml = "styles.css"
lcContentIdCss = loEmail.AddRelatedString(lcFilenameInHtml,loSbCss.GetAsString(),"utf-8")
if (loEmail.LastMethodSuccess <> .T.) then
    ? loEmail.LastErrorText
    release loMailman
    release loEmail
    release loSbCss
    return
endif

// The src attribute for the image tag is set to the contentIdCss:
loSbHtml = createobject("CkStringBuilder")
loSbHtml.AppendLine("<!DOCTYPE html>",llBCrlf)
loSbHtml.AppendLine("<html>",llBCrlf)
loSbHtml.AppendLine("<head>",llBCrlf)
loSbHtml.AppendLine('  <link rel="stylesheet" href="cid:CONTENT_ID_CSS">',llBCrlf)
loSbHtml.AppendLine("</head>",llBCrlf)
loSbHtml.AppendLine("<body>",llBCrlf)
loSbHtml.AppendLine("",llBCrlf)
loSbHtml.AppendLine("<h1>This is a heading</h1>",llBCrlf)
loSbHtml.AppendLine("<p>This is a paragraph.</p>",llBCrlf)
loSbHtml.AppendLine("",llBCrlf)
loSbHtml.AppendLine("</body>",llBCrlf)
loSbHtml.AppendLine("</html>",llBCrlf)

lnNumReplacements = loSbHtml.Replace("CONTENT_ID_CSS",lcContentIdCss)

loEmail.SetHtmlBody(loSbHtml.GetAsString())

llSuccess = loMailman.SendEmail(loEmail)
if (llSuccess <> .T.) then
    ? loMailman.LastErrorText
else
    ? "Mail Sent!"
endif



release loMailman
release loEmail
release loSbCss
release loSbHtml