Sample code for 30+ languages & platforms
Perl

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

Chilkat2 Perl
use strict;
use warnings;
use Chilkat2;

# 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.
my $mailman = Chilkat2::MailMan->new;

# 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
my $email = Chilkat2::Email->new;
$email->Subject('HTML Email with embedded CSS');
$email->From('Chilkat Support <my-office365-user@mydomain.com>');
$email->AddTo('Chilkat Support', 'support@chilkatsoft.com');

my $sbCss = Chilkat2::StringBuilder->new;
my $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.
my $filenameInHtml = 'styles.css';
my $contentIdCss = $email->AddRelatedString($filenameInHtml, $sbCss->GetAsString(), 'utf-8');
if (!$email->LastMethodSuccess) {
    print $email->LastErrorText, "\n";
    exit;
}

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

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

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

my $success = $mailman->SendEmail($email);
if (!$success) {
    print $mailman->LastErrorText, "\n";
} else {
    print "Mail Sent!\n";
}