<?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="me@mydomain.com";
* $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="mlemos@acm.org";
$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";
?>
|