Newsgroup: it.comp.www.php
Titolo: Usare la classe mime_mail [lunghetto]

Salve a tutti!
Guardando nei vecchi post ho visto che per inviare attachment da un
form viene consigliato l'uso della classe mime_mail che ho scaricato
da un link di un post e chiamato mail.inc.
Allora, il form fa un autoinvio: includo il file nei tag php e come da
esempio creo un nuovo oggetto chiamato mail:
<?php include ("mail.inc");
$attachment = fread(fopen("test.jpg", "r"), filesize("test.jpg"));
$mail = new mime_mail();
$mail->to="
in...@prova.it
";
$mail->send();
?>
Perchè quando apro la pagina mi stampa tutto ciò che c'è dopo la prima
dichiarazione $mail-> ???? Qualcuno sa dirmi dove può stare il
problema? Non ne vengo proprio a capo... Nella classe c'è anche un
esempio di utilizzo, ma a me il browser continua a stampare:
to="
in...@prova.it
";$mail->send();
Grazie, sono proprio diperato!

 wrote in message
news:98dc3f42.02060...@posting.google.com...

Non mi e' molto chiaro, andiamo passo per passo:
- mail.inc contiente <? ?>
- $attachment non lo usi? Non ti da error? (cattivo stile senza testare
fopen())
- Metti error_reporting(E_ALL) all'inizio dello script.
- Quale classe hai usato (ci sono vari che si chiamano mime_mail),
  se non risolvi con error_reporting, posta magari il mail.inc.

:
 *      - General code clean-up
 *      - separate body- and from-property
 *      - killed some mostly un-necessary stuff
 */
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
?>
Ecco, come vedi se io utilizzo la classe come spiegato nel post
precedente lo script printa tutto ciň che c'č dopo la prima
dichiarazione $mail-> e non capisco perchč. Lo stesso con specificato
$attachment.
Nella classe c'era anche un esempio di utilizzo, ma copiando pari pari
il tutto nel mio script comunque non funziona, printa sempre parte del
codice dopo il primo $mail-> ... non ne esco proprio piů.
Tu hai un altra classe da utilizzare con esempio di funzionamento?
Grazie ancora.


[...]
Non il massimo come classe, ma ho provato e funziona...
Direi di provare con questa classe (esempio nel header):
 
www.ziet.zhitomir.ua/~rozhik/php3/mimemail/mimemail.tar.gz
(sorgente da leggere: 
www.ziet.zhitomir.ua/~rozhik/php3/mimemail/src.phps
)

 (sorgente da leggere: 
www.ziet.zhitomir.ua/~rozhik/php3/mimemail/src.phps
)
Appena posso la provo, ti ringrazio.
P.S. complimenti per il sito! E per il CV.
Ciao


C'e' solo un errore in quella classe quando fai un attachment. Ti da in un
caso un errore e devi mettere alla riga indicata un $this->
(attach_qualcosa, non mi riccordo bene)

 (attach_qualcosa, non mi riccordo bene)
Grazie mille... Finalmente ora riesco ad inviare mail con attachment
dal form che avevo costruito.
Dovrò affinare un po' il tutto, ma ora ricevo mail con allegati :))))
Ciao.