Perl
Chilkat2 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
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";
}