Sample code for 30+ languages & platforms
Perl

Send HTML Email with Attachments

See more SMTP Examples

Demonstrates how to send an HTML email with file attachments.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

$mailman = chilkat::CkMailMan->new();

$mailman->put_SmtpHost("smtp.my-starttls-mail-server.com");

$mailman->put_SmtpUsername("MY-SMTP-USERNAME");
$mailman->put_SmtpPassword("MY-SMTP-PASSWORD");

$mailman->put_StartTLS(1);
$mailman->put_SmtpPort(587);

# Create a new email object
$email = chilkat::CkEmail->new();
$email->put_Subject("Test SMTP API to Send HTML Email with Attachments");
$email->put_From('Joe Programmer <joe@my-starttls-mail-server.com>');
$email->AddTo("Chilkat Support",'support@chilkatsoft.com');

# Add a plain-text alternative body, which will likely never be seen.
# (It is shown if the receiving email client is incapable of displaying HTML email.)
$email->AddPlainTextAlternativeBody("This is a plain-text alternative body...");

# Our HTML will include an image, so add the related image here.
$contentIdStarfish = $email->addRelatedFile("qa_data/jpg/starfish.jpg");
if ($email->get_LastMethodSuccess() != 1) {
    print $email->lastErrorText() . "\r\n";
    exit;
}

# The src attribute for the image tag is set to the contentIdStarfish:
$sbHtml = chilkat::CkStringBuilder->new();
$sbHtml->Append("<html><body><p>This is an HTML email with an embedded image.</p>");
$sbHtml->Append("<p><img src=\"cid:CONTENT_ID_STARFISH\" /></p></body></html>");
$numReplacements = $sbHtml->Replace("CONTENT_ID_STARFISH",$contentIdStarfish);

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

# Finally, add some attachments to the email.
# Add a file attachment.
$success = $email->AddFileAttachment2("qa_data/pdf/fishing.pdf","application/pdf");
if ($success != 1) {
    print $email->lastErrorText() . "\r\n";
    exit;
}

# Add an attachment where the content is contained in a string.
$content = "This is the content of the 2nd attached file.";
$email->AddStringAttachment("someText.txt",$content);

# Send the HTML email.
$success = $mailman->SendEmail($email);
if ($success != 1) {
    print $mailman->lastErrorText() . "\r\n";
    exit;
}

$success = $mailman->CloseSmtpConnection();
if ($success != 1) {
    print "Connection to SMTP server not closed cleanly." . "\r\n";
}

print "HTML email with attachments sent!" . "\r\n";