Sample code for 30+ languages & platforms
PHP

Send HTML Email with Attachments

See more SMTP Examples

Demonstrates how to send an HTML email with file attachments.

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.

$mailman = new MailMan();

$mailman->SmtpHost = 'smtp.my-starttls-mail-server.com';

$mailman->SmtpUsername = 'MY-SMTP-USERNAME';
$mailman->SmtpPassword = 'MY-SMTP-PASSWORD';

$mailman->StartTLS = true;
$mailman->SmtpPort = 587;

// Create a new email object
$email = new Email();
$email->Subject = 'Test SMTP API to Send HTML Email with Attachments';
$email->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.
try {
    $contentIdStarfish = $email->AddRelatedFile('qa_data/jpg/starfish.jpg');

    // The src attribute for the image tag is set to the contentIdStarfish:
    $sbHtml = new StringBuilder();
    $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.
    $email->AddFileAttachment2('qa_data/pdf/fishing.pdf', 'application/pdf');

    // 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.
    $mailman->SendEmail($email);
} catch (\Chilkat2\Exception $e) {
    echo $e->getMessage(), "\n";
    exit;
}

try {
    $mailman->CloseSmtpConnection();
} catch (\Chilkat2\Exception $e) {
    echo "Connection to SMTP server not closed cleanly.\n";
}

echo "HTML email with attachments sent!\n";