Sample code for 30+ languages & platforms
C

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

C
#include <C_CkMailMan.h>
#include <C_CkEmail.h>
#include <C_CkStringBuilder.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkMailMan mailman;
    HCkEmail email;
    HCkStringBuilder sbCss;
    BOOL bCrlf;
    const char *filenameInHtml;
    const char *contentIdCss;
    HCkStringBuilder sbHtml;
    int numReplacements;

    success = 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.
    mailman = CkMailMan_Create();

    // Use your SMTP server hostname.  This example uses office365, but it could be any SMTP server..
    CkMailMan_putSmtpHost(mailman,"outlook.office365.com");
    CkMailMan_putSmtpPort(mailman,587);
    CkMailMan_putStartTLS(mailman,TRUE);

    // Set the SMTP login/password
    CkMailMan_putSmtpUsername(mailman,"OFFICE365-SMTP-LOGIN");
    CkMailMan_putSmtpPassword(mailman,"OFFICE365-SMTP-PASSWORD");

    // Create a new email object
    email = CkEmail_Create();
    CkEmail_putSubject(email,"HTML Email with embedded CSS");
    CkEmail_putFrom(email,"Chilkat Support <my-office365-user@mydomain.com>");
    CkEmail_AddTo(email,"Chilkat Support","support@chilkatsoft.com");

    sbCss = CkStringBuilder_Create();
    bCrlf = TRUE;
    CkStringBuilder_AppendLine(sbCss,"body {",bCrlf);
    CkStringBuilder_AppendLine(sbCss,"    background-color: powderblue;",bCrlf);
    CkStringBuilder_AppendLine(sbCss,"}",bCrlf);
    CkStringBuilder_AppendLine(sbCss,"h1 {",bCrlf);
    CkStringBuilder_AppendLine(sbCss,"    color: blue;",bCrlf);
    CkStringBuilder_AppendLine(sbCss,"}",bCrlf);
    CkStringBuilder_AppendLine(sbCss,"p {",bCrlf);
    CkStringBuilder_AppendLine(sbCss,"    color: red;",bCrlf);
    CkStringBuilder_AppendLine(sbCss,"}",bCrlf);

    // It's possible to add a CSS file directly by calling AddRelatedFile.
    // This example will add the CSS from a string.
    filenameInHtml = "styles.css";
    contentIdCss = CkEmail_addRelatedString(email,filenameInHtml,CkStringBuilder_getAsString(sbCss),"utf-8");
    if (CkEmail_getLastMethodSuccess(email) != TRUE) {
        printf("%s\n",CkEmail_lastErrorText(email));
        CkMailMan_Dispose(mailman);
        CkEmail_Dispose(email);
        CkStringBuilder_Dispose(sbCss);
        return;
    }

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

    numReplacements = CkStringBuilder_Replace(sbHtml,"CONTENT_ID_CSS",contentIdCss);

    CkEmail_SetHtmlBody(email,CkStringBuilder_getAsString(sbHtml));

    success = CkMailMan_SendEmail(mailman,email);
    if (success != TRUE) {
        printf("%s\n",CkMailMan_lastErrorText(mailman));
    }
    else {
        printf("Mail Sent!\n");
    }



    CkMailMan_Dispose(mailman);
    CkEmail_Dispose(email);
    CkStringBuilder_Dispose(sbCss);
    CkStringBuilder_Dispose(sbHtml);

    }