Sample code for 30+ languages & platforms
PHP

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 Downloads

Chilkat2 PHP
<?php

use Chilkat2\Email;
use Chilkat2\MailMan;
use Chilkat2\StringBuilder;

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

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

// Create a new email object
$email = new 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 StringBuilder();
$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';
try {
    $contentIdCss = $email->AddRelatedString($filenameInHtml, $sbCss->GetAsString(), 'utf-8');
} catch (\Chilkat2\Exception $e) {
    echo $e->getMessage(), "\n";
    exit;
}

// The src attribute for the image tag is set to the contentIdCss:
$sbHtml = new 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());

try {
    $mailman->SendEmail($email);
    echo "Mail Sent!\n";
} catch (\Chilkat2\Exception $e) {
    echo $e->getMessage(), "\n";
}