Newsgroup: it.comp.www.php
Titolo: Invio ocn allegato

Lo script sotto riportato dovrebbe spedire un messaggio con un file
allegato. Solo che arriva il messaggio senza testo e senza allegato. Virne
visualizzato l'oggetto ed il mittente.
I campi :
emailfrom
argomento
attachment
li ricevo da un form in htm.
COme mai non funziona ?
Allego script:
$to= "
no...@destinatorio.com
"; // l'indirizzo mail a cui far giungere le mail
$subject = "prova con allegato"; // l'oggetto della mail
$emailfrom= trim($_POST['emailfrom']);
$argomento= trim($_POST['argomento']);
// send an email
// Obtain file upload vars
$fileatt = $_FILES['attachment']['tmp_name'];
$fileatt_type = $_FILES['attachment']['type'];
$fileatt_name = $_FILES['attachment']['name'];
// Headers
$headers = "From: $emailfrom";
if (is_uploaded_file($fileatt)) {
// Read the file to be attached ('rb' = read binary)
$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);
// create a boundary string. It must be unique
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
// Add the headers for a file attachment
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";
// Add a multipart boundary above the plain message
$message ="This is a multi-part message in MIME format.\n\n";
$message.="--{$mime_boundary}\n";
$message.="Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$message.="Content-Transfer-Encoding: 7bit\n\n";
$message.="From: ".$emailfrom."\n";
$message.="Comments: ".$argomento."\n\n";
// Base64 encode the file data
$data = chunk_split(base64_encode($data));
// Add file attachment to the message
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name=\"{$fileatt_name}\"\n" .
//"Content-Disposition: attachment;\n" .
//" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .
"--{$mime_boundary}--\n";
}
// Send the completed message
mail($to,$subject,$message,$headers);

 visualizzato l'oggetto ed il mittente.
Ma perche' anziche' reinventare la ruota e utilizzare una funzione come mail()
che e' notevolmente rozza non usi phpmailer (
http://phpmailer.codeworxtech.com/
)?
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
It is bad luck to be superstitious.
    --Andrew W. Mathis

 ha scritto nel messaggio 
news:glpvrn$fiq$1...@tdi.cu.mi.it...

Io ho uno spazio con aruba non credo posso installare phpmailer.
comunque vorrei prima capire perchè lo script che ho allegato non funziona.

 comunque vorrei prima capire perchè lo script che ho allegato non funziona.
Hai verificato che il tuo script rispetti tutte le varie RFC?
Inviare correttamente una mail con attach non è proprio semplice e, come 
ti ha suggerito Luigi, visto che c'è un prodotto che funziona (bene) 
perchè non utilizzarlo?
	Francesco

 Io ho uno spazio con aruba non credo posso installare phpmailer.
Funziona su aruba

--
Ok come devo fare per installare phpmailer nel mio sito ?
Quali files devo trasferire

 Io ho uno spazio con aruba non credo posso installare phpmailer.
Non c'e' nulla da installare, devi solamente copiare un file e includerlo.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Q: It's the insurance damage waiver for your beautiful new car.
  Will you need collision coverage?
James Bond: Yes
Q: Fire?
James Bond: Probably
Q: Personal Injury?
James Bond: I hope not, but accidents do happen.
Q: They frequently do with you.
James Bond: Is there any other protection I need?
Q: Only from me 007, unless you bring that car back in pristine order.
    --"007 Tomorrow Never Dies"

 Ok come devo fare per installare phpmailer nel mio sito ?
Scarichi il pacchetto.
Metti in una dir il file class.phpmailer.php e, opzionalmente la dir language.
Includi class.phpmailer.php
Usi un codice simile a questo per creare e inviare una mail (ovvio che devi
anche leggere e comprendere la documentazione):
$mail = new PHPMailer();
$body = "Questa mail per dimostrare che la funzione <b>mail()</b> <i>sucks and
swallows</i>";
$mail->IsSMTP();
$mail->Host = 'localhost'; // SMTP server
$mail->From = '
mitt...@uselibrary.com
';
$mail->Subject = "Inutile perder tempo con mail()";
$mail->AltBody = "Il messagio e' in formato HTML.";
$mail->AddAddress('
alu...@aluigi.it
');
$mail->Send();
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Prima scrivi il programma e poi le specifiche.

 ha scritto nel messaggio 
news:glt0cj$fr0$1...@tdi.cu.mi.it...

Ho seguito le tue istruzioni. Dalla cartella esempio ho prelavato tale 
scrpt:
<?php
include_once('class.phpmailer.php');
$mail = new PHPMailer(); // defaults to using php "mail()"
$body = $mail->getFile('contents.html');
$body = eregi_replace("[\]",'',$body);
$mail->From = "
na...@yourdomain.com
";
$mail->FromName = "First Last";
$mail->Subject = "PHPMailer Test Subject via mail()";
$mail->AltBody = "To view the message, please use an HTML compatible email 
viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$mail->AddAddress("
wh...@otherdomain.com
", "John Doe");
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
?>
L'ho fatto girare ma mi da questi errori:
Warning: fopen(contents.html) [function.fopen]: failed to open stream: No 
such file or directory in D:\inetpub\webs\miosito\prova\class.phpmailer.php 
on line 1870
Mailer Error: Could not instantiate mail function.

 Mailer Error: Could not instantiate mail function.
probabilmente $mail->getFile('contents.html') referenzia un file che non esiste
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
After things have gone from bad to worse, the cycle will repeat itself.

 ha scritto nel messaggio 
news:gm0rmn$lhe$1...@tdi.cu.mi.it...

Ho eliminato quella riga e mi da questo errore :


 Mailer Error: Could not instantiate mail function. 
Verifica con il tuo fornitore di hosting e scegli la modalita' di invio corretta
regolando opportunamenta la proprieta' $Mailer dell'oggetto che crei. I valori
ammessi pee $Mailer sono "mail", "sendmail", o "smtp".
http://phpmailer.codeworxtech.com/index.php?pg=properties
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
I could prove God statistically.
    --George Gallup

 ha scritto nel messaggio 
news:gm1rnv$dsv$1...@tdi.cu.mi.it...

Io ho lo spazio con aruba. Comunque ho modificato lo script in questo modo. 
inserendo
 $Mailer = ("mail");
 ma mi da lo stesso errore:
<?php
include_once('class.phpmailer.php');
$mail = new PHPMailer(); // defaults to using php "mail()"
$body = $mail->getFile('contents.html');
$body = eregi_replace("[\]",'',$body);
$Mailer = ("mail");
