Sample code for 30+ languages & platforms
PHP Extension

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 PHP Extension Downloads

PHP Extension
<?php

include("chilkat.php");

$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 = new CkMailMan();

// Use your SMTP server hostname.  This example uses office365, but it could be any SMTP server..
$mailman->put_SmtpHost('outlook.office365.com');
$mailman->put_SmtpPort(587);
$mailman->put_StartTLS(true);

// Set the SMTP login/password
$mailman->put_SmtpUsername('OFFICE365-SMTP-LOGIN');
$mailman->put_SmtpPassword('OFFICE365-SMTP-PASSWORD');

// Create a new email object
$email = new CkEmail();
$email->put_Subject('HTML Email with embedded CSS');
$email->put_From('Chilkat Support <my-office365-user@mydomain.com>');
$email->AddTo('Chilkat Support','support@chilkatsoft.com');

$sbCss = new CkStringBuilder();
$bCrlf = true;
$sbCss->AppendLine('body {',$bCrlf);
$sbCss->AppendLine('    background-color: powderblue;',$bCrlf);
$sbCss->AppendLine('}',$bCrlf);
$sbCss->AppendLine('h1 {',$bCrlf);
$sbCss->AppendLine('    color: blue;',$bCrlf);
$sbCss->AppendLine('}',$bCrlf);
$sbCss->AppendLine('p {',$bCrlf);
$sbCss->AppendLine('    color: red;',$bCrlf);
$sbCss->AppendLine('}',$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 = $email->addRelatedString($filenameInHtml,$sbCss->getAsString(),'utf-8');
if ($email->get_LastMethodSuccess() != true) {
    print $email->lastErrorText() . "\n";
    exit;
}

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

$numReplacements = $sbHtml->Replace('CONTENT_ID_CSS',$contentIdCss);

$email->SetHtmlBody($sbHtml->getAsString());

$success = $mailman->SendEmail($email);
if ($success != true) {
    print $mailman->lastErrorText() . "\n";
}
else {
    print 'Mail Sent!' . "\n";
}


?>