<?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"; 
?>
 
 |