Sample code for 30+ languages & platforms
PHP Extension

Send HTML Email with Attachments

See more SMTP Examples

Demonstrates how to send an HTML email with file attachments.

Chilkat PHP Extension Downloads

PHP Extension
<?php

include("chilkat.php");

$success = false;

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

$mailman = new CkMailMan();

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

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

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

// Create a new email object
$email = new CkEmail();
$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() != true) {
    print $email->lastErrorText() . "\n";
    exit;
}

// The src attribute for the image tag is set to the contentIdStarfish:
$sbHtml = new CkStringBuilder();
$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 != true) {
    print $email->lastErrorText() . "\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 != true) {
    print $mailman->lastErrorText() . "\n";
    exit;
}

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

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

?>