Sample code for 30+ languages & platforms
Swift

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 Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

    // 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.
    let mailman = CkoMailMan()!

    // Use your SMTP server hostname.  This example uses office365, but it could be any SMTP server..
    mailman.smtpHost = "outlook.office365.com"
    mailman.smtpPort = 587
    mailman.startTLS = true

    // Set the SMTP login/password
    mailman.smtpUsername = "OFFICE365-SMTP-LOGIN"
    mailman.smtpPassword = "OFFICE365-SMTP-PASSWORD"

    // Create a new email object
    let email = CkoEmail()!
    email.subject = "HTML Email with embedded CSS"
    email.from = "Chilkat Support <my-office365-user@mydomain.com>"
    email.add(to: "Chilkat Support", emailAddress: "support@chilkatsoft.com")

    let sbCss = CkoStringBuilder()!
    var bCrlf: Bool = true
    sbCss.appendLine(str: "body {", crlf: bCrlf)
    sbCss.appendLine(str: "    background-color: powderblue;", crlf: bCrlf)
    sbCss.appendLine(str: "}", crlf: bCrlf)
    sbCss.appendLine(str: "h1 {", crlf: bCrlf)
    sbCss.appendLine(str: "    color: blue;", crlf: bCrlf)
    sbCss.appendLine(str: "}", crlf: bCrlf)
    sbCss.appendLine(str: "p {", crlf: bCrlf)
    sbCss.appendLine(str: "    color: red;", crlf: bCrlf)
    sbCss.appendLine(str: "}", crlf: bCrlf)

    // It's possible to add a CSS file directly by calling AddRelatedFile.
    // This example will add the CSS from a string.
    var filenameInHtml: String? = "styles.css"
    var contentIdCss: String? = email.addRelatedString(nameInHtml: filenameInHtml, str: sbCss.getAsString(), charset: "utf-8")
    if email.lastMethodSuccess != true {
        print("\(email.lastErrorText!)")
        return
    }

    // The src attribute for the image tag is set to the contentIdCss:
    let sbHtml = CkoStringBuilder()!
    sbHtml.appendLine(str: "<!DOCTYPE html>", crlf: bCrlf)
    sbHtml.appendLine(str: "<html>", crlf: bCrlf)
    sbHtml.appendLine(str: "<head>", crlf: bCrlf)
    sbHtml.appendLine(str: "  <link rel=\"stylesheet\" href=\"cid:CONTENT_ID_CSS\">", crlf: bCrlf)
    sbHtml.appendLine(str: "</head>", crlf: bCrlf)
    sbHtml.appendLine(str: "<body>", crlf: bCrlf)
    sbHtml.appendLine(str: "", crlf: bCrlf)
    sbHtml.appendLine(str: "<h1>This is a heading</h1>", crlf: bCrlf)
    sbHtml.appendLine(str: "<p>This is a paragraph.</p>", crlf: bCrlf)
    sbHtml.appendLine(str: "", crlf: bCrlf)
    sbHtml.appendLine(str: "</body>", crlf: bCrlf)
    sbHtml.appendLine(str: "</html>", crlf: bCrlf)

    var numReplacements: Int = sbHtml.replace(value: "CONTENT_ID_CSS", replacement: contentIdCss).intValue

    email.setHtmlBody(html: sbHtml.getAsString())

    success = mailman.sendEmail(email: email)
    if success != true {
        print("\(mailman.lastErrorText!)")
    }
    else {
        print("Mail Sent!")
    }


}