Home arrow PHP arrow Page 3 - Email Management Details

Attached Images for HTML Emails - PHP

In this second part of a two-part article, you'll learn how to manage email headers when creating a PHP email program, attach a file to a message, and more. This article is excerpted from chapter eight of the Zend PHP Certification Study Guide, written by Zend Technlogies (Sams; ISBN: 0672327090).

  1. Email Management Details
  2. Attaching a File to a Message
  3. Attached Images for HTML Emails
  4. A Word About Email Delivery
  5. Exam Prep Questions
By: Sams Publishing
Rating: starstarstarstarstar / 8
November 16, 2006

print this article



HTML emails will attempt to download their images and stylesheets from your web server. Because of security and privacy reasons, many MUAs will refuse to attempt these downloads, ruining the look of your HTML email message.

You can add your images as attachments to your email, and then point your HTML at the attached images:

  • Change the first Content-Type of your email to be multipart/related. Don't forget to include the boundary definition.

  • When you add an image as an attachment, include this additional header:

  • Content-Location: URL

  • URL is the URL that you use inside the <img> tag to include your image.

// who is the email going to?
// change this to be *your* email address ;-)
$to = "stuart";
// what is the URL of the image?
$image = http://static.php.net/http://www.php.net/
images/php.gif; // what is the message? $message = "This is my fourth email sent from " . "<a
href="http://www.php.net">PHP</a>.\r\n" . "This email has an image " . "<img src="" . $image . ""> here.\r\n"; // don't forget our blank line $blank_line = "\r\n"; // define our boundary $boundary_text = "php-12345"; $boundary = "" . $boundary_text . "\r\n"; $last_boundary = " . $boundary_text . "\r\n"; // add the MIME headers $more_headers = "MIME-Version: 1.0\r\n" . "Content-Type: multipart/related;
boundary="" . $boundary_text . ""; type="text/html"\r\n"; // create the first part of the message $mime_message = "If you are reading this, it means
that your e-mail client\r\n" . "does not support MIME. Please
upgrade your e-mail client\r\n" . "to one that does support MIME.\r\n" . $boundary; // add the second part of the message $mime_message .= "Content-Type: text/html;
charset="iso-8859-1"\r\n" . "Content-Transfer-Encoding:
7bit\r\n" . $blank_line . $message . $boundary; // now add the attachment $mime_message .= "Content-Type: image/gif;
name="php.gif"\r\n" . "Content-Transfer-Encoding:
base64\r\n" . "Content-Location: " . $image . "\r\n" . $blank_line . chunk_split(base64_encode
(file_get_contents("php.gif"))) . "\r\n" . $last_boundary; // send the email $result = mail ( $to, "My first HTML e-mail with an embedded
image", $mime_message, $more_headers ); ?>

Using Extra Command-Line Parameters

The fifth argument to mail() is a list of parameters to use when executing the sendmail wrapper.

These parameters have no effect at all if you are using PHP on Windows without a sendmail wrapper.

>>> More PHP Articles          >>> More By Sams Publishing

blog comments powered by Disqus
escort Bursa Bursa escort Antalya eskort


- Hackers Compromise PHP Sites to Launch Attac...
- Red Hat, Zend Form OpenShift PaaS Alliance
- PHP IDE News
- BCD, Zend Extend PHP Partnership
- PHP FAQ Highlight
- PHP Creator Didn't Set Out to Create a Langu...
- PHP Trends Revealed in Zend Study
- PHP: Best Methods for Running Scheduled Jobs
- PHP Array Functions: array_change_key_case
- PHP array_combine Function
- PHP array_chunk Function
- PHP Closures as View Helpers: Lazy-Loading F...
- Using PHP Closures as View Helpers
- PHP File and Operating System Program Execut...
- PHP: Effects of Wrapping Code in Class Const...

Developer Shed Affiliates


Dev Shed Tutorial Topics: