- Home
- Categorie
- Coding e Sistemistica
- PHP
- Invio form con allegato...ma problema
-
Invio form con allegato...ma problema
Ciao
Vorrei implementare questo script in modo che invii i dati compilati anche se non ho nessun file da allegare.
Invece ora lo script prevede solo che ci sia anche l'allegato, infatti se provo ad inviare senza nessun allegato la mail arriva vuota, allegando un file tutti i dati completi.
il file in questione è:<?php
$destinatario = $_POST['destinatario'];
$nome=$_POST['nome'];
$cognome=$_POST['cognome'];
$oggetto=$_POST['oggetto'];
$mail=$_POST['mail'];
$citta=$_POST['citta'];
$telefono=$_POST['telefono'];
$message=$_POST['message'];$messaggio="
Nome : $nome
Cognome : $cognome
Oggetto : $oggetto
Mail : $mail
Città : $citta
Telefono : $telefono
Messaggio : $message
";$allegato = $_FILES['allegato']['tmp_name'];
$allegato_type = $_FILES['allegato']['type'];
$allegato_name = $_FILES['allegato']['name'];$headers = "From: " . $mail;
$msg = "";if (is_uploaded_file($allegato))
{
$file = fopen($allegato,'rb');
$data = fread($file, filesize($allegato));
fclose($file);
$data = chunk_split(base64_encode($data));
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";$headers .= "\nMIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed;\n";
$headers .= " boundary="{$mime_boundary}"";
$msg .= "This is a multi-part message in MIME format.\n\n";
$msg .= "--{$mime_boundary}\n";$msg .= "Content-Type: text/plain; charset="iso-8859-1"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= $messaggio . "\n\n";
$msg .= "--{$mime_boundary}\n";$msg .= "Content-Disposition: attachment;\n";
$msg .= " filename="{$allegato_name}"\n";
$msg .= "Content-Transfer-Encoding: base64\n\n";
$msg .= $data . "\n\n";$msg .= "--{$mime_boundary}--\n";
if (mail($destinatario, $oggetto, $msg, $headers))
{header("Refresh: 5; URL=index.html");
echo "<br><p align='center'>Mail inviata con successo ! <br> Sarete contattati al più presto ! <br><br> Reindirizzamento....</p>";}else{
echo "<p>Errore!</p>";
}
}
else
{
echo "<p>Errore!</p>";
}grazie in anticipo.
-
un aiuto mi è stato dato.......però ora la mail arriva con i soli dati del form se non allego file, arriva invece solo l'allegato se inserisco allegato e dati
help me please
modifica:<?php
$destinatario = $_POST['destinatario'];
$nome=$_POST['nome'];
$cognome=$_POST['cognome'];
$oggetto=$_POST['oggetto'];
$mail=$_POST['mail'];
$citta=$_POST['citta'];
$telefono=$_POST['telefono'];
$message=$_POST['message'];$messaggio="
Nome : $nome
Cognome : $cognome
Oggetto : $oggetto
Mail : $mail
Città : $citta
Telefono : $telefono
Messaggio : $message
";$allegato = $_FILES['allegato']['tmp_name'];
$allegato_type = $_FILES['allegato']['type'];
$allegato_name = $_FILES['allegato']['name'];if (is_uploaded_file($allegato)) {
$headers = "From: " . $mail;
$msg = "";$file = fopen($allegato,'rb');
$data = fread($file, filesize($allegato));
fclose($file);
$data = chunk_split(base64_encode($data));
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";$headers .= "\nMIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed;\n";
$headers .= " boundary="{$mime_boundary}"";
$msg .= "This is a multi-part message in MIME format.\n\n";
$msg .= "--{$mime_boundary}\n";$msg .= "Content-Type: text/plain; charset="iso-8859-1"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= "$messaggio\n\n";
$msg .= "--{$mime_boundary}\n";$msg .= "Content-Disposition: attachment;\n";
$msg .= " filename="{$allegato_name}"\n";
$msg .= "Content-Transfer-Encoding: base64\n\n";
$msg .= "$data\n\n";$msg .= "--{$mime_boundary}--\n";
$msg .= $messaggio; # Forse non era incluso il messaggio?
if (mail($destinatario, $oggetto, $msg, $headers)) {
header("Refresh: 5; URL=index.html");
echo "<br><p align='center'>Mail inviata con successo ! <br> Sarete contattati al più presto ! <br><br> Reindirizzamento....</p>";} else { echo "Errore"; }
} else {
$headers = "From: " . $mail;
$msg = $messaggio;if (mail($destinatario, $oggetto, $msg, $headers)) {
header("Refresh: 5; URL=index.html"); echo "<br><p align='center'>Mail inviata con successo - MA SENZA ALLEGATO - ! <br> Sarete contattati al più presto ! <br><br> Reindirizzamento....</p>";
} else { echo "Errore"; }
}
-
Funziona...grazie per l'aiuto a tutti quanti :p:p:p:p:p:p:p:p
[PHP]<?php
// Recuperiamo i valori dal form
$destinatario = $_POST['destinatario'];
$nome=$_POST['nome'];
$cognome=$_POST['cognome'];
$oggetto=$_POST['oggetto'];
$mail=$_POST['mail'];
$citta=$_POST['citta'];
$telefono=$_POST['telefono'];
$message=$_POST['message'];$messaggio="
Nome : $nome
Cognome : $cognome
Oggetto : $oggetto
Mail : $mail
Città : $citta
Telefono : $telefono
Messaggio : $message
";
// Creiamo le variabili per il file attachment
$allegato = $_FILES['allegato']['tmp_name'];
$allegato_type = $_FILES['allegato']['type'];
$allegato_name = $_FILES['allegato']['name'];
// Verifichiamo se è stato eseguito l'upload del file
if (is_uploaded_file($allegato)) {$headers = "From: " . $mail;
$msg = "";
// usiamo la funzione fopen e fread per aprire e leggere il file e poi chiudiamo con fclose
$file = fopen($allegato,'rb');
$data = fread($file, filesize($allegato));
fclose($file);
// Codifichiamo il file adattandolo a base64 usando la funzione chunk_split di php
$data = chunk_split(base64_encode($data));
/* Creiamo una variabile per un divisore che dividere la parte testuale del messaggio dal file stesso altrimenti riceveremo una serie illeggibili di caratteri
*/
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
// Aggiungo le intestazioni necessarie per l'allegato
$headers .= "\nMIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed;\n";
$headers .= " boundary="{$mime_boundary}"";
// Definisco il tipo di messaggio (MIME/multi-part)
$msg .= "This is a multi-part message in MIME format.\n\n";
// Mettiamo il separatore
$msg .= "--{$mime_boundary}\n";// Parte "testuale" del messaggio
$msg .= "Content-Type: text/plain; charset="iso-8859-1"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= $messaggio . "\n\n";$msg .= "--{$mime_boundary}\n";
// Aggiungiamo l'allegato alla mail
$msg .= "Content-Disposition: attachment;\n";
$msg .= " filename="{$allegato_name}"\n";
$msg .= "Content-Transfer-Encoding: base64\n\n";
$msg .= $data . "\n\n";$msg .= "--{$mime_boundary}--\n";
// Invio la mail con allegato
if (mail($destinatario, $oggetto, $msg, $headers)) {header("Refresh: 5; URL=index.html");
echo "<br><p align='center'>Mail inviata con successo ! <br> Sarete contattati al più presto ! <br><br> Reindirizzamento....</p>";} else { echo "Errore"; }
} else {
$headers = "From: " . $mail;
$msg .= $messaggio . "\n\n";
// Invio la mail senza allegato
if (mail($destinatario, $oggetto, $msg, $headers)) {header("Refresh: 5; URL=index.html"); echo "<br><p align='center'>Mail inviata con successo ! <br> Sarete contattati al più presto ! <br><br> Reindirizzamento....</p>";
} else { echo "Errore"; }
}[/PHP]