- Home
- Categorie
- Coding e Sistemistica
- PHP
- Invio allegato da form
-
Invio allegato da form
Buongiorno a tutti,
avrei un altro problemino col form che sto realizzando:
tale form, oltre ai normali campi da compilare, prevede l'invio di un allegato alla mia casella email.
L'invio va a buon fine e nella mia email ricevo il messaggio con l'allegato. Il problema è che l'allegato risulta danneggiato e quindi non lo posso aprire.Posto qui sotto il codice che ho utilizzato:
[php]
#CARATTERISTICHE FILE ALLEGATO
$nomefile_tmp = $_FILES["allegato"]["tmp_name"];
$tipoallegato = $_FILES["allegato"]["type"];
$nomeallegato = $_FILES["allegato"]["name"];
#DATI OTTENUTI DAGLI ALTRI CAMPI DEL FORM
$testo_email = "Ruolo: $ruolo\nNome: $nome\nCognome: $cognome\nEmail: $email\nNote: $note";
#CREAZIONE FILE DI LETTURA ALLEGATO
$textfile = fopen($nomefile_tmp,"rb");
$dati_allegato = fread($textfile,filesize($nomefile_tmp));
fclose($textfile);
#CODIFICA ALLEGATO SU BASE64
$dati_allegato = chunk_split(base64_encode($dati_allegato));
#NUMERO PER CODICE DELIMITATORE
$numero_casuale = md5(time());
#INIZIO DELIMITATORE
$cod_delimitatore = "----=NextPart$numero_casuale";
#PARAMETRI INVIO EMAIL
$tipo_email = "MIME-Version: 1.0\nContent-type: multipart/mixed;boundary=$cod_delimitatore";
$headers = "From: miaemail@miaemail\n$tipo_email";
$headers .= "BCC: altraemail@altraemail[/email]\r\n";
$destinatario = "miaemail@miaemail";
$oggetto = "Nuovo messaggio dal sito, sezione: Lavora con noi";
#MESSAGGIO TESTO
$messaggio_a = "This is a multi-part message in MIME format.\n\n".
"--$cod_delimitatore\n".
"Content-Type: text/plain; charset="iso-8859-1"\n".
"Content-Transfer-Encoding: 7bit\n\n".
"$testo_email\n\n";
ALLEGATO
$messaggio_b = "--$cod_delimitatore\n".
"Content-Type: $tipoallegato; name="$nomeallegato"\n".
"Content-Disposition: attachment; filename="$nomeallegato"\n".
"Content-Transfer-Encoding: Base64\n\n".
"$dati_allegato\n\n".
"--$cod_delimitatore--\n"; #FINE DELIMITATORE
#UNISCO MESSAGGIO TESTUALE CON ALLEGATO
$messaggio = "$messaggio_a$messaggio_b";
#INVIO EMAIL
mail($destinatario, $oggetto, $messaggio, $headers);
#REINDIRIZZO PAGINA
header("Location: ../contatti.php?id=lavora_con_noi&rs=email_sent");
[/php]Qualcuno mi sa dire cosa sbaglio?
Grazie in anticipo!
-
Io ti consiglio di usare la classe phpmailer per la funzione mail che permette di inviare anche allegati facilmente