Sample code for 30+ languages & platforms
PHP ActiveX

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

PHP ActiveX
<?php

$success = 0;

// 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 COM("Chilkat.MailMan");

// 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 = 1;

// Set the SMTP login/password
$mailman->SmtpUsername = 'OFFICE365-SMTP-LOGIN';
$mailman->SmtpPassword = 'OFFICE365-SMTP-PASSWORD';

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

$sbCss = new COM("Chilkat.StringBuilder");
$bCrlf = 1;
$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->LastMethodSuccess != 1) {
    print $email->LastErrorText . "\n";
    exit;
}

// The src attribute for the image tag is set to the contentIdCss:
$sbHtml = new COM("Chilkat.StringBuilder");
$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 != 1) {
    print $mailman->LastErrorText . "\n";
}
else {
    print 'Mail Sent!' . "\n";
}


?>