17.2. Sending MIME Mail
Problem
You want to send MIME email. For example, you want to send multipart messages with both plain-text and HTML portions and have MIME-aware mail readers automatically display the correct portion.
Solution
Use the Mail_mime
class in PEAR:
require 'Mail.php'; require 'Mail/mime.php'; $to = 'adam@example.com, sklar@example.com'; $headers['From'] = 'webmaster@example.com'; $headers['Subject'] = 'New Version of PHP Released!'; // create MIME object $mime = new Mail_mime; // add body parts $text = 'Text version of email'; $mime->setTXTBody($text); $html = '<html><body>HTML version of email</body></html>'; $mime->setHTMLBody($html); $file = '/path/to/file.png'; $mime->addAttachment($file, 'image/png'); // get MIME formatted message headers and body $body = $mime->get(); $headers = $mime->headers($headers); $message =& Mail::factory('mail'); $message->send($to, $headers, $body);
Discussion
PEAR’s Mail_mime
class provides
an object-oriented interface to all the behind-the-scenes details
involved in creating an email message that contains both text and
HTML parts. The class is similar to PEAR’s
Mail
class, but instead of defining the body as a
string of text, you create a Mail_mime
object and
call its methods to add parts to the body:
// create MIME object $mime = new Mail_mime; // add body parts $text = 'Text version of email'; $mime->setTXTBody($text); $html = '<html><body>HTML version of email</body></html>'; $mime->setHTMLBody($html); $file = '/path/to/file.txt'; ...
Get PHP Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.