| 
<?php/*
 * test_html_mail_message.php
 *
 * @(#) $Header: /opt2/ena/metal/mimemessage/test_html_mail_message.php,v 1.15 2012/09/15 09:15:48 mlemos Exp $
 *
 */
 
 require("email_message.php");
 
 
 /*
 *  Trying to guess your e-mail address.
 *  It is better that you change this line to your address explicitly.
 *  $from_address="[email protected]";
 *  $from_name="My Name";
 */
 $from_address=getenv("USER")."@".getenv("HOSTNAME");
 $from_name=getenv("USERNAME");
 
 $reply_name=$from_name;
 $reply_address=$from_address;
 $reply_address=$from_address;
 $error_delivery_name=$from_name;
 $error_delivery_address=$from_address;
 
 /*
 *  Change these lines or else you will be mailing the class author.
 */
 $to_name="Manuel Lemos";
 $to_address="[email protected]";
 
 $subject="Testing Manuel Lemos' MIME E-mail composing and sending PHP class: HTML message";
 $email_message=new email_message_class;
 $email_message->SetEncodedEmailHeader("To",$to_address,$to_name);
 $email_message->SetEncodedEmailHeader("From",$from_address,$from_name);
 $email_message->SetEncodedEmailHeader("Reply-To",$reply_address,$reply_name);
 $email_message->SetHeader("Sender",$from_address);
 
 /*
 *  Set the Return-Path header to define the envelope sender address to which bounced messages are delivered.
 *  If you are using Windows, you need to use the smtp_message_class to set the return-path address.
 */
 if(defined("PHP_OS")
 && strcmp(substr(PHP_OS,0,3),"WIN"))
 $email_message->SetHeader("Return-Path",$error_delivery_address);
 
 $email_message->SetEncodedHeader("Subject",$subject);
 
 /*
 *  An HTML message that requires any dependent files to be sent,
 *  like image files, style sheet files, HTML frame files, etc..,
 *  needs to be composed as a multipart/related message part.
 *  Different parts need to be created before they can be added
 *  later to the message.
 *
 *  Parts can be created from files that can be opened and read.
 *  The data content type needs to be specified. The can try to guess
 *  the content type automatically from the file name.
 */
 $image=array(
 "FileName"=>"http://files.phpclasses.org/graphics/phpclasses/logo-phpclasses.png",
 "Content-Type"=>"automatic/name",
 "Disposition"=>"inline",
 /*
 *  You can set the Cache option if you are going to send the same message
 *  to multiple users but this file part does not change.
 *
 "Cache"=>1
 */
 );
 $email_message->CreateFilePart($image,$image_part);
 
 /*
 *  Parts that need to be referenced from other parts,
 *  like images that have to be hyperlinked from the HTML,
 *  are referenced with a special Content-ID string that
 *  the class creates when needed.
 */
 $image_content_id=$email_message->GetPartContentID($image_part);
 
 /*
 *  Many related file parts may be embedded in the message.
 */
 $image=array(
 "FileName"=>"http://files.phpclasses.org/graphics/phpclasses/background.jpg",
 "Content-Type"=>"automatic/name",
 "Disposition"=>"inline",
 /*
 *  You can set the Cache option if you are going to send the same message
 *  to multiple users but this file part does not change.
 *
 "Cache"=>1
 */
 );
 $email_message->CreateFilePart($image,$background_image_part);
 
 /*
 *  Related file parts may also be embedded in the actual HTML code in the
 *  form of URL like those referenced by the SRC attribute of IMG tags.
 *  This example is commented out because not all mail programs support
 *  this method of embedding images in HTML messages.
 *
 *  $image=array(
 *    "FileName"=>"http://files.phpclasses.org/graphics/phpclasses/logo-phpclasses.png",
 *    "Content-Type"=>"automatic/name",
 *  );
 *  $image_data_url=$email_message->GetDataURL($image);
 */
 
 /*
 *  Use different identifiers to reference different related file parts.
 *  Some e-mail programs do not support setting the background image in the
 *  body tag or style. A workaround consists on using a table with 100%
 *  with the background attribute set to the image URL.
 */
 $background_image_content_id="cid:".$email_message->GetPartContentID($background_image_part);
 
 /*
 *  The URL of referenced parts in HTML starts with cid:
 *  followed by the Contentp-ID string. Notice the image link below.
 */
 $html_message="<html>
 <head>
 <title>$subject</title>
 <style type=\"text/css\"><!--
 body { color: black ; font-family: arial, helvetica, sans-serif ; background-color: #A3C5CC }
 A:link, A:visited, A:active { text-decoration: underline }
 --></style>
 </head>
 <body>
 <table background=\"$background_image_content_id\" width=\"100%\">
 <tr>
 <td>
 <center><h1>$subject</h1></center>
 <hr>
 <P>Hello ".strtok($to_name," ").",<br><br>
 This message is just to let you know that the <a href=\"http://www.phpclasses.org/mimemessage\">MIME E-mail message composing and sending PHP class</a> is working as expected.<br><br>
 <center><h2>Here is an image embedded in a message as a separate part:</h2></center>
 <center><img src=\"cid:".$image_content_id."\"></center>".
 /*
 * This example of embedding images in HTML messages is commented out
 * because not all mail programs support this method.
 *
 * <center><h2>Here is an image embedded directly in the HTML:</h2></center>
 * <center><img src=\"".$image_data_url."\"></center>
 */
 "Thank you,<br>
 $from_name</p>
 </td>
 </tr>
 </table>
 </body>
 </html>";
 $email_message->CreateQuotedPrintableHTMLPart($html_message,"",$html_part);
 
 /*
 *  It is strongly recommended that when you send HTML messages,
 *  also provide an alternative text version of HTML page,
 *  even if it is just to say that the message is in HTML,
 *  because more and more people tend to delete HTML only
 *  messages assuming that HTML messages are spam.
 */
 $text_message="This is an HTML message. Please use an HTML capable mail program to read this message.";
 $email_message->CreateQuotedPrintableTextPart($email_message->WrapText($text_message),"",$text_part);
 
 /*
 *  Multiple alternative parts are gathered in multipart/alternative parts.
 *  It is important that the fanciest part, in this case the HTML part,
 *  is specified as the last part because that is the way that HTML capable
 *  mail programs will show that part and not the text version part.
 */
 $alternative_parts=array(
 $text_part,
 $html_part
 );
 $email_message->CreateAlternativeMultipart($alternative_parts,$alternative_part);
 
 /*
 *  All related parts are gathered in a single multipart/related part.
 */
 $related_parts=array(
 $alternative_part,
 $image_part,
 $background_image_part
 );
 $email_message->AddRelatedMultipart($related_parts);
 
 /*
 *  One or more additional parts may be added as attachments.
 *  In this case a file part is added from data provided directly from this script.
 */
 $attachment=array(
 "Data"=>"This is just a plain text attachment file named attachment.txt .",
 "Name"=>"attachment.txt",
 "Content-Type"=>"automatic/name",
 "Disposition"=>"attachment",
 /*
 *  You can set the Cache option if you are going to send the same message
 *  to multiple users but this file part does not change.
 *
 "Cache"=>1
 */
 );
 $email_message->AddFilePart($attachment);
 
 /*
 *  The message is now ready to be assembled and sent.
 *  Notice that most of the functions used before this point may fail due to
 *  programming errors in your script. You may safely ignore any errors until
 *  the message is sent to not bloat your scripts with too much error checking.
 */
 $error=$email_message->Send();
 if(strcmp($error,""))
 echo "Error: $error\n";
 else
 echo "Message sent to $to_name\n";
 ?>
 |