Newsgroup: it.comp.www.php
Titolo: mail con allegato da PC

alcuni POST sotto ho trovato questo codice per inviare gli allegati e
funziona benissimo, solo che l'allegato deve essere in una cartella
all'interno del server, ma se volessi inviare un allegato che č
contenuto in una cartella del mio PC č possibile farlo??
quale č l'eventuale codice per fare questo?
grazie
<?
class mime_mail
 {
 var $parts;
 var $to;
 var $from;
 var $headers;
 var $subject;
 var $body;
//
//     void mime_mail()
//     class constructor
//
 function mime_mail()
  {
  $this->parts = array();
  $this->to =  "";
  $this->from =  "";
  $this->subject =  "";
  $this->body =  "";
  $this->headers =  "";
  }
//
//     void add_attachment(string message, [string name], [string
ctype])
//   Add an attachment to the mail object
//
 function add_attachment($message, $name =  "", $ctype =
"application/octet-stream")
  {
  $this->parts[] = array (
                           "ctype" => $ctype,
                           "message" => $message,
                           "encode" => $encode,
                           "name" => $name
                          );
  }
//
//     void build_message(array part=
//      Build message parts of an multipart mail
//
function build_message($part)
 {
 $message = $part[ "message"];
 $message = chunk_split(base64_encode($message));
 $encoding =  "base64";
 return  "Content-Type: ".$part[ "ctype"].
                        ($part[ "name"]? "; name = \"".$part[ "name"].
"\""
:  "").
                         "\nContent-Transfer-Encoding:
$encoding\n\n$message\n";
 }
//
//      void build_multipart()
//      Build a multipart mail
//
function build_multipart()
 {
 $boundary =  "b".md5(uniqid(time()));
 $multipart =  "Content-Type: multipart/mixed; boundary =
$boundary\n\nThis
is a MIME encoded message.\n\n--$boundary";
 for($i = sizeof($this->parts)-1; $i >= 0; $i--)
    {
    $multipart .=  "\n".$this->build_message($this->parts[$i]).
"--$boundary";
    }
 return $multipart.=  "--\n";
 }
//
//      void send()
//      Send the mail (last class-function to be called)
//
function send()
 {
 $mime =  "";
 if (!empty($this->from))
    $mime .=  "From: ".$this->from. "\n";
 if (!empty($this->headers))
    $mime .= $this->headers. "\n";
 if (!empty($this->body))
    $this->add_attachment($this->body,  "",  "text/plain");
 $mime .=  "MIME-Version: 1.0\n".$this->build_multipart();
 mail($this->to, $this->subject,  "", $mime);
 }
};
// end of class
//
// Example usage
//
 $attachment = fread(fopen("cartolina.jpg", "r"),
filesize("cartolina.jpg"));
 $mail = new mime_mail();
 $mail->from = $from1;
 $mail->headers = "Errors-To: 
tob...@dnet.it
";
 $mail->to = $to1;
 $mail->subject = "Una cartolina da $from per $to";
 $mail->body = "This is just a test.";
 $mail->add_attachment("$attachment", "cartolina.jpg", "image/jpeg");
 $mail->send();
?>


E' un po' piu' complesso, perche' dovresti fare prima un upload del immagine
sul server e poi utilizzare lo script che hai gia'. Per il upload ci sono
vari script in giro...
esempio:
<form action="submit.php" method="post" enctype="multipart/form-data">
<input type="file" name="test">
<input type="submit" value="e via">
</form>
ti crea variabili in submit.php:
$test // il file temporaneo creato sul server
$test_size // lunghezza
$test_name // nome del file originale
$test_type // tipo mime, ad esempio "image/jpeg" ecc.
Leggi anche qui: 
http://it.php.net/manual/it/html/features.file-upload.html