Salve a tutti, avrei bisogno di una mano.
Ho creato un form per inviare mail e funziona, tuttavia necessito di allegare dei file alle mail che tale form invia.
In rete ho trovato vari esempi ma nessuno funziona. Questo mi sembrava molto valido e versatile:
http://www.youtube.com/watch?featur...id=zYocypr0Xig&annotation_id=annotation_79594
Tuttavia la mail che arriva, arriva con gli allegati di 0 byte e con il nome cambiato.
In giro ho letto che dovrei utilizzare phpmailer solo che non ho ben capito come fare. Inoltre mi chiedevo se tale metodo può essere adattato al mio form oppure devo crearne uno nuovo.
In rete ho trovato questo script che funziona ma non bene. Se i campi li lascio vuoti non appare il messaggio d'errore
Grazie
Manu
Ho creato un form per inviare mail e funziona, tuttavia necessito di allegare dei file alle mail che tale form invia.
In rete ho trovato vari esempi ma nessuno funziona. Questo mi sembrava molto valido e versatile:
http://www.youtube.com/watch?featur...id=zYocypr0Xig&annotation_id=annotation_79594
Tuttavia la mail che arriva, arriva con gli allegati di 0 byte e con il nome cambiato.
In giro ho letto che dovrei utilizzare phpmailer solo che non ho ben capito come fare. Inoltre mi chiedevo se tale metodo può essere adattato al mio form oppure devo crearne uno nuovo.
In rete ho trovato questo script che funziona ma non bene. Se i campi li lascio vuoti non appare il messaggio d'errore
Codice:
<form action="form.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="destinatario" value="[email protected]">
<table style="border:0;color:white;float:left">
<tr>
<td>Tua Mail:</td>
<td><input type="text" name="mittente" value="" style="width: 300px" /><br><br></td>
</tr>
<tr>
<td>Oggetto:</td>
<td><input type="text" name="oggetto" value="" style="width: 300px" /><br><br></td>
</tr>
<tr>
<td>Messaggio:</td>
<td style="width:300px"><textarea cols="20" rows="4" name="testomessaggio" style="width:300px;overflow:hidden;height:130px; max-width:300px;max-height:130px"></textarea><br>
<br></td>
</tr>
<tr>
<td>Allega file:</td>
<td style="width:305px"><input type="file" name="attachment" style="width:305px;" class="file_1"/><br>
<br><br></td>
</tr>
<tr>
<td colspan="2"><input type="image" value="submit" src="images/invia2.png" style="float:right" /></td>
</tr>
</table>
</form>
Codice:
<?php
// Recupero il valore dei campi del form
$destinatario = $_POST['destinatario'];
$mittente = $_POST['mittente'];
$oggetto = $_POST['oggetto'];
$messaggio = $_POST['messaggio'];
// Valorizzo le variabili relative all'allegato
$allegato = $_FILES['allegato']['tmp_name'];
$allegato_type = $_FILES['allegato']['type'];
$allegato_name = $_FILES['allegato']['name'];
// Creo 2 variabili che riempirò più avanti...
$headers = "From: " . $mittente;
$msg = "";
// Verifico se il file è stato caricato correttamente via HTTP
// In caso affermativo proseguo nel lavoro...
if (is_uploaded_file($allegato))
{
// Apro e leggo il file allegato
$file = fopen($allegato,'rb');
$data = fread($file, filesize($allegato));
fclose($file);
// Adatto il file al formato MIME base64 usando base64_encode
$data = chunk_split(base64_encode($data));
// Genero il "separatore"
// Serve per dividere, appunto, le varie parti del messaggio.
// Nel nostro caso separerà la parte testuale dall'allegato
$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";
// Metto il separatore
$msg .= "--{$mime_boundary}\n";
// Questa è la 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";
// Metto il separatore
$msg .= "--{$mime_boundary}\n";
// Aggiungo l'allegato al messaggio
$msg .= "Content-Disposition: attachment;\n";
$msg .= " filename=\"{$allegato_name}\"\n";
$msg .= "Content-Transfer-Encoding: base64\n\n";
$msg .= $data . "\n\n";
// chiudo con il separatore
$msg .= "--{$mime_boundary}--\n";
}
else
{
$msg = $messaggio;
}
// Invio la mail
if (mail($destinatario, $oggetto, $msg, $headers))
{
echo "<p>Mail inviata con successo!</p>";
}else{
echo "<p>Errore!</p>";
}
?>
Grazie
Manu