C
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
#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);
}