You're probably going to need a mime class - Manuel Lemos makes a good one,
then send as a mime attachment.
http://freshmeat.net/projects/mimemessageclass/
Some sample code below that I use (and a mime class).
Example.php
<?
if (!isset($SEND_MIME_LOADED)) {
require "mimeclass.php";
}
$mymessage = new Mail();
$mymessage->from = "$emailfrom";
$mymessage->to = "$emailto";
$mymessage->subject = "$emailfromname sent a picture to you from
shanghaiguide.com";
$mymessage->headers["Reply-To"] = "$emailfrom";
$mymessage->headers["X-Extra-Header"] = "Pointless Header v3.0";
$mymessage->body = "$emailfromname sent you a picture from the
ShanghaiGuide.com site\n" .
"----------------------------\n".
"http://www.Shanghaiguide.com\n\n".
"The Shanghai Guide - The real guide to Shanghai
Life\n\nLive Chat, Thousands of Pictures, Classifieds, Message Forum and
more...";
$mymessage->attachments[0] = $DOCUMENT_ROOT.$pic;
$mymessage->Send();
?>
mimeclass.php
<?php
//Abort on re-entry...
if ($SEND_MIME_LOADED==1){
exit;
}
$SEND_MIME_LOADED=1;
////////////////////////////////////////////////////////////////
//Main Code
////////////////////////////////////////////////////////////////
/*
Uses sendmail to send the mail, mimencode to do the MIME
encoding, and zip to automatically zip attachments.
Contacting the author(s):
Brought to you by the team at Sequoia Softworks, http://www.sequoiasoft.com
Feel free to contact [EMAIL PROTECTED] and tell us how you like it!
(Or to complain bitterly, report bugs, or suggest new features.)
Known shortcomings/bugs:
o guessMIMEType()only knows about a few MIME types. You can expand this as
you need.
o $mime_boundary in the Send() method should be randomly generated, but it
isn't likely to ever hurt anything in its current form
Example:
require("Mail.phtml");
$mymessage = new Mail();
$mymessage->from = "[EMAIL PROTECTED]";
$mymessage->to = "[EMAIL PROTECTED]";
$mymessage->subject = "This is your lucky day";
$mymessage->headers["Reply-To"] = "[EMAIL PROTECTED]";
$mymessage->headers["X-Extra-Header"] = "Pointless Header v3.0";
$mymessage->body = "Doesn't it feel good to get mail?\nEspecially with
files
attached!\n";
$mymessage->attachments[0] = "tarball.tar.gz";
$mymessage->attachments[1] = "images/smiling_countenance.gif";
$mymessage->attachments[2] = "/usr/share/reference/jargondict.html";
$mymessage->attachments[3] = "./core";
$mymessage->attachments[4] = "/etc/passwd"; //naughty naughty!!
$mymessage->ZipAttachments("your_files.zip"); //uncomment this to zip all
//the attachments into one
big
//attachment.
$mymessage->Send();
*/
class Mail {
var $from; //The sender
var $to; //The recipient
var $subject; //The subject line
var $headers; //A hash of additional headers (headername => headervalue)
var $zipname; //The name of the file the attachments are zipped into
//($zipname == false if attachments are to be sent
//individually)
var $attachments; //An array of files to attach
var $body; //The body text of the message
//Mail constructor: initializes vars to default values. 'Nuff said.
function Mail() {
$this->from = "";
$this->to = "";
$this->subject = "";
$this->headers = array();
$this->zipname = false;
$this->attachments = array();
$this->body = "";
}
//Auxiliary method, used to guess a file's MIME type
//based on its extension. Doesn't know about too many
//extensions right now
function guessMIMEType($filename) {
//GUESS MIME TYPE
$filename = basename($filename);
if(strrchr($filename,".") == false) {
return("application/octet-stream");
}
$ext = strrchr($filename,".");
switch($ext) {
case ".gif":
return "image/gif";
break;
case ".gz":
return "application/x-gzip";
case ".htm":
case ".html":
return "text/html";
break;
case ".jpg":
return "image/jpeg";
break;
case ".tar":
return "application/x-tar";
break;
case ".txt":
return "text/plain";
break;
case ".zip":
return "application/zip";
break;
default:
return "application/octet-stream";
break;
}
}
//Cute little convenience method. Supply it with a filename to
//zip attachments to, or supply it with false if attachments are
//sent individually
function ZipAttachments($name) {
$this->zipname = $name;
}
//The workhorse method, does the actually sending of the mail.
//Doesn't check for errors so be careful!
function Send($sendmail = "/usr/lib/sendmail") {
if($this->from == "") {
$fp = popen($sendmail . " -i " . $this->to, "w");
}
else {
$fp = popen($sendmail . " -i -f\"" . $this->from . "\" " .
$this->to, "w");
}
$mime_boundary = "-1747901728-1448367683-913849620=:4553";
if($fp == false)
return false;
//Write subject header
fwrite($fp,"Subject: " . $this->subject . "\n");
//Write user-defined headers
reset($this->headers);
while(list($hdrname,$hdrval) = each($this->headers)) {
fwrite($fp,$hdrname . ": " . $hdrval . "\n");
}
//If there are attachments, this needs to be a MIME message
if(count($this->attachments) > 0) {
//Write MIME headers
fwrite($fp,"MIME-Version: 1.0\n");
fwrite($fp,"Content-Type: multipart/mixed; BOUNDARY=\""
. $mime_boundary . "\"\n");
fwrite($fp,"\n");
//Write dummy message body
fwrite($fp," This message is in MIME format. The
first part should be readable text,\n");
fwrite($fp," while the remaining parts are likely
unreadable without MIME-aware tools.\n");
fwrite($fp," Send mail to
[EMAIL PROTECTED] for more info.\n");
fwrite($fp,"\n");
//Write message text
fwrite($fp,"--" . "$mime_boundary" . "\n");
fwrite($fp,"Content-Type: text/plain; charset=US-
ASCII\n");
fwrite($fp,"\n");
fwrite($fp,$this->body);
fwrite($fp,"\n");
//Handle attachments
if($this->zipname != false) { //IF we've been told to
//zip the attachments
fwrite($fp,"--" . $mime_boundary . "\n");
fwrite($fp,"Content-Type: application/zip; name=
\"". $this->zipname . "\"\n");
fwrite($fp,"Content-Transfer-Encoding: base64
\n");
//fwrite($fp,"Content-ID: " . $content_ID . "\n");
fwrite($fp,"Content-Description:\n");
fwrite($fp,"\n");
$cmdline = "zip - ";
while(list($key, $attachment_name) = each($this->attachments))
$cmdline .= "$attachment_name ";
$cmdline .= "| mimencode -b";
$pp = popen($cmdline,"r");
while(!feof($pp)) {
$data = fread($pp,4096);
fwrite($fp,$data);
}
pclose($pp);
}
else { //no need to zip the attachments, attach them
//separately
while(list($key, $attachment_name) = each($this->attachments)) {
fwrite($fp,"--" . $mime_boundary . "\n");
fwrite($fp,"Content-Type: " . $this->guessMIMEType($attachment_name) .
";
name=\"". basename($attachment_name) . "\"\n");
fwrite($fp,"Content-Transfer-Encoding: base64\n");
//fwrite($fp,"Content-ID: " .
//$content_ID . "\n");
fwrite($fp,"Content-Description:\n");
fwrite($fp,"\n");
$pp = popen("mimencode -b $attachment_name","r");
while(!feof($pp)) {
$data = fread($pp,4096);
fwrite($fp,$data);
}
pclose($pp);
}
}
fwrite($fp,"--" . $mime_boundary . "--\n");
}
//No need for a MIME message, so it's an RFC822 message
else {
fwrite($fp,"\n");
fwrite($fp,$this->body);
}
pclose($fp);
}
}
?>
-----Original Message-----
From: Mark Lo [mailto:[EMAIL PROTECTED]]
Sent: August 29, 2001 12:25 PM
To: [EMAIL PROTECTED]
Subject: [PHP] mailto function to attach a photo
Hi,
I would like to know how to use the mailto function to attach a
specific file.
Thank you
Mark
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]