Invio email con allegati

Gianluca1972

Nuovo Utente
9 Mag 2006
14
0
0
Ciao a tutti,
ho questo scriptino che invia email con allegato: il problema è che l'allegato E' VUOTO :incazz2: , cioè la email che arriva ha in allegato il file che ho mandato, ma con dimensione 0

<?php

error_reporting(E_ALL);

// RENDIAMO LO SCRIPT COMPATIBILE CON LE VERSIONI DI PHP < 4.1.0
if(!isset($_POST)) $_POST = $HTTP_POST_VARS;
if(!isset($_FILES)) $_FILES = $HTTP_POST_FILES;

// RIPULIAMO I VARI CAMPI DEL MODULO
$Soggetto = trim(stripslashes($_POST["Soggetto"]));
$Mail = trim($_POST["Mail"]);
$Contenuto = trim(stripslashes($_POST["Contenuto"]));

$MailFromAddress = "Mail";

// ASSEGNIAMO A VARIABILI PIU' LEGGIBILI, LE PROPRIETA' DELL'ALLEGATO
$attach = $_FILES["allegato"]["tmp_name"];
$file_name = $_FILES["allegato"]["name"];
$file_type = $_FILES["allegato"]["type"];
$file_size = $_FILES["allegato"]["size"];

// DELIMITATORE
$boundary = md5(uniqid(microtime()));

// APRIAMO L'ALLEGATO PER LEGGERLO E CODIFICARLO
$file = @fopen($attach, "r");
$contents = @fread($file, $file_size);
$encoded_attach = chunk_split(base64_encode($contents));
@fclose($file);

// INTESTAZIONI DELLA MAIL
$mail_headers = '';
$mail_headers .= "MIME-version: 1.0\n";
$mail_headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"";
$mail_headers .= "X-attachments: $file_name\n";
$mail_headers .= "From: $Mail\r\n";

// COSTRUIAMO IL CORPO DELLA MAIL
$mail_body = "Content-disposition: attachment; filename =\"$file_name\"\n\n";
$mail_body = "--$boundary\n";
$mail_body .= "Content-Type: text/plain; charset=us-ascii\n";
$mail_body .= "Content-Transfer-Encoding: 7bit\n\n";
$mail_body .= "Contenuto: $Contenuto\n\n";
$mail_body .= "Soggetto: $Soggetto\n\n";
$mail_body .= "--$boundary\n";
$mail_body .= "Content-type: $file_type; name=\"$file_name\"\n";
$mail_body .= "Content-Transfer-Encoding: base64\n";
$mail_body .= "$encoded_attach\n";
$mail_body .= "--$boundary--\n";

// INVIO DELLA MAIL
if(@mail("[email protected]", $Soggetto, $mail_body, $mail_headers)) { // SE L'INVIO E' ANDATO A BUON FINE...

echo "<p>La mail è stata inoltrata con successo.</p>";

} else { // ALTRIMENTI...

echo "<p>Si sono verificati dei problemi nell'invio della mail.</p>";

}

?>


Che ci date un'occhio per favore ????!!!!
THANKS
 
usate PHPmailer, non complicatevi la vita con la funzione mail()

Il tuo sarà indubbiamente un ottimo suggerimento, tuttavia mi ci vorrebbero dei giorni a capire come usare phpmailer (purtroppo ho fretta e sono un principiante con il php), mentre spererei che per risolvere il problema sullo script che ho postato ci voglia molto meno, se mi date una mano....
Grazie ancora
 
In realtà PHPmailer è pronta all'uso, è stata concepita proprio per coloro che non vogliono incasinarsi con mail() e sanno poco di PHP, 2 minuti d'installazione e mandi ogni tipo di mail.

Per quanto riguarda il tuo problema usa il codice di questo tutorial, è praticamente identico al tuo ma è testato e funziona.

Poi non utilizzare error_reporting(E_ALL), rischi di non sapere se qualche variabile non viene definita.

Non usare variabili come $HTTP_POST_VARS e $HTTP_POST_FILES, $_POST e $_FILES sono già globali.
 
invio email - errori con script

Ho provato quello che mi hai dato e mi da i seguenti errori:

Warning: fopen(): open_basedir restriction in effect. File(/tmp/phpLfvaxm) is not within the allowed path(s): (/home/sergio/html/www.dominiodiprova.com/html/) in /home/sergio/html/www.dominiodiprova.com/html/prova/procedura/invia.php on line 17

Warning: fopen(/tmp/phpLfvaxm): failed to open stream: Operation not permitted in /home/sergio/html/www.dominiodiprova.com/html/prova/procedura/invia.php on line 17

Warning: filesize(): open_basedir restriction in effect. File(/tmp/phpLfvaxm) is not within the allowed path(s): (/home/sergio/html/www.dominiodiprova.com/html/) in /home/sergio/html/www.dominiodiprova.com/html/prova/procedura/invia.php on line 18

Warning: fread(): supplied argument is not a valid stream resource in /home/sergio/html/www.dominiodiprova.com/html/prova/procedura/invia.php on line 18

Warning: fclose(): supplied argument is not a valid stream resource in /home/sergio/html/www.dominiodiprova.com/html/prova/procedura/invia.php on line 19
Messaggio inviato con successo.


"Messaggio inviato con successo" ... si grazie, ma con l'allegato a 0 byte

La linea 17 corrisponde a:

$file = fopen($attachment,'rb');


Che ne dici? (abbi pazienza...)
Grazie. Gianluca.
 
Purtroppo sembra che tu non possa effettuare upload nella cartella temp, credo manchino i permessi.
Dovresti rivolgerti all'admin del tuo hosting e segnalare il problema.
 

Discussioni simili