Re: Send a Html page
| From: | Reuben D Budiardja | Date: | Mon, 03 Jul 2000 15:03:27 +0000 |
| Subject: | Re: Send a Html page | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-4507@lists.php.net to get a copy of this message | ||
What you can do is to create an html file using php first, and then send
the HTML file as an attachment. I did this before. Here is an example.
<?php
$name = "Reuben D. Budiardja"
$Address = "Somewhere in US"
// Open a file
$fp = fopen("scratch.html", "w");
// Writting an HTML code to the file. Note that you can write the php
variable also to that file (isn't that cool?)
fwrite($fp, "
<HTML>
<HEAD>
<TITLE>An HTML Page that will be sent</TITLE>
</HEAD>
<BODY BGCOLOR=\"WHITE\">
<P><I>My name is $name</I>
<P><B>I live $Address</B>
<B><U>You can write any HTML Codes here.</U></B><BR>
</BODY>
</HTML>
"); // end fwrite
fclose($fp);
// To Send This you need a class that will send it as attachment.
// I give the code for the class at the end. Just Copy and paste it
// Here is an example on how you will send it
include ('CMailFile.inc');
// Specify mail function arguments
$sendto = "somewhere@yahoo.com";
$replyto = "anywhere@hotmail.com;
$subject = "an HTML file";
$message = "Click on the following attachment to open the HTML page.";
$filename = "scratch.html";
$mimetype = "text/html";
// Sending the form as attachment
$my_mail = new
CMailFile($subject,$sendto,$replyto,$message,$filename,$mimetype);
$my_mail -> sendfile();
// End PHP CODE
?>
Here is the code for the file CMailFile.inc
<?php
// Filename: CMailFile.inc
// Class for sending file as attachment
/*
If chunk_split works on your system, change the call to my_chunk_split
to chunk_split
*/
/* Note: if you don't have base64_encode on your sytem it will not work */
// simple class that encapsulates mail() with addition of mime file
attachment.
class CMailFile {
var $subject;
var $addr_to;
var $text_body;
var $text_encoded;
var $mime_headers;
var $mime_boundary = "==================_846811060==_";
var $smtp_headers;
function CMailFile($subject,$to,$from,$msg,$filename,$mimetype =
"application/octet-stream", $mime_filename = false) {
$this->subject = $subject;
$this->addr_to = $to;
$this->smtp_headers = $this->write_smtpheaders($from);
$this->text_body = $this->write_body($msg);
$this->text_encoded =
$this->attach_file($filename,$mimetype,$mime_filename);
$this->mime_headers = $this->write_mimeheaders($filename, $mime_filename);
}
function attach_file($filename,$mimetype,$mime_filename) {
$encoded = $this->encode_file($filename);
if ($mime_filename) $filename = $mime_filename;
$out = "--" . $this->mime_boundary . "\n";
$out = $out . "Content-type: " . $mimetype . ";
name=\"$filename\";\n";
$out = $out . "Content-Transfer-Encoding: base64\n";
$out = $out . "Content-disposition: attachment; filename=\"$filename\"\n\n";
$out = $out . $encoded . "\n";
$out = $out . "--" . $this->mime_boundary . "\n";
return $out;
}
function encode_file($sourcefile) {
if (is_readable($sourcefile)) {
$fd = fopen($sourcefile, "r");
$contents = fread($fd, filesize($sourcefile));
$encoded = my_chunk_split(base64_encode($contents));
fclose($fd);
}
return $encoded;
}
function sendfile() {
$headers = $this->smtp_headers . $this->mime_headers;
$message = $this->text_body . $this->text_encoded;
mail($this->addr_to,$this->subject,$message,$headers);
}
function write_body($msgtext) {
$out = "--" . $this->mime_boundary . "\n";
$out = $out . "Content-Type: text/plain; charset=\"us-ascii\"\n\n";
$out = $out . $msgtext . "\n";
return $out;
}
function write_mimeheaders($filename, $mime_filename) {
if ($mime_filename) $filename = $mime_filename;
$out = "MIME-version: 1.0\n";
$out = $out . "Content-type: multipart/mixed; ";
$out = $out . "boundary=\"$this->mime_boundary\"\n";
$out = $out . "Content-transfer-encoding: 7BIT\n";
$out = $out . "X-attachments: $filename;\n\n";
return $out;
}
function write_smtpheaders($addr_from) {
$out = "From: $addr_from\n";
$out = $out . "Reply-To: $addr_from\n";
$out = $out . "X-Mailer: PHP3\n";
$out = $out . "X-Sender: $addr_from\n";
return $out;
}
}
// usage - mimetype example "image/gif"
// $mailfile = new
CMailFile($subject,$sendto,$replyto,$message,$filename,$mimetype);
// $mailfile->sendfile();
// Splits a string by RFC2045 semantics (76 chars per line, end with \r\n).
// This is not in all PHP versions so I define one here manuall.
function my_chunk_split($str)
{
$stmp = $str;
$len = strlen($stmp);
$out = "";
while ($len > 0) {
if ($len >= 76) {
$out = $out . substr($stmp, 0, 76) . "\r\n";
$stmp = substr($stmp, 76);
$len = $len - 76;
}
else {
$out = $out . $stmp . "\r\n";
$stmp = ""; $len = 0;
}
}
return $out;
}
// end script
?>
Hope that helps
Reuben D. Budiardja
At 04:15 PM 7/3/2000 +0200, Ghislain Bruyere wrote:
>I want to send a html page by email
>
>Emile Axelrad wrote:
>
>> > Hello,
>> >
>> > Have you a exemple to send a html page with php3 ?
>> >
>> > Have a nice day
>> >
>> > Thanks
>> >
>> > Ghislain
>>
>> <?php
>>
>> # This is PHP code.
>>
>> ?>
>>
>> <html><body>Blah</body></html>
>> <!--- This is HTML code --->
>>
>> <?php
>>
>> # This is PHP code again.
>> # We can also produce the HTML all using PHP instead of breaking out of
>> it...
>>
>> echo "<html><body>Blah</body></html>";
>>
>> # That's it!!!
>>
>> ?>
>>
>> - Emile Axelrad
>
>
>--
>PHP General Mailing List (http://www.php.net/)
>To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net
>For additional commands, e-mail: php-general-help@lists.php.net
>To contact the list administrators, e-mail: php-list-admin@lists.php.net
>
>
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
"The only incomprehensible thing about the universe is that
it is comprehensible."
- Albert Einstein -
~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^
Reuben Donald Budiardja
reubendb@goshen.edu
Homepage: http://www.goshen.edu/~reubendb