Buongiorno,
ho creato un form mail con allegato ed ho problemi con l'allegato, ovvero quando compilo il form senza allegato tutto funziona correttamente mentre quando lo invio con allegato (ricevendo la mail su outlook) il messaggio appare vuoto o con solo le informazioni di testo e una serie di codici al posto dell'allegato mentre se uso il programma mail il messaggio e l'allegato si vedono correttamente.
Non riesco a far visualizzare correttamente l'allegato utilizzando come programma di ricezione outlook.
Questo è il codice php che uso:
ho creato un form mail con allegato ed ho problemi con l'allegato, ovvero quando compilo il form senza allegato tutto funziona correttamente mentre quando lo invio con allegato (ricevendo la mail su outlook) il messaggio appare vuoto o con solo le informazioni di testo e una serie di codici al posto dell'allegato mentre se uso il programma mail il messaggio e l'allegato si vedono correttamente.
Non riesco a far visualizzare correttamente l'allegato utilizzando come programma di ricezione outlook.
Questo è il codice php che uso:
PHP:
<?php
// Recuperiamo i valori dal form e aggiungiamo la nostra email dove ricevere il file allegato con la mail
$to = "[email protected]". ", ". "$mail";
$oggetto = "form per l'accesso immediato al prelievo";
$cognome = trim($_POST['cognome']);
$nome = $_POST['nome'];
$datanascita = $_POST['datanascita'];
$luogonascita = $_POST['luogonascita'];
$codicefiscale = $_POST['codicefiscale'];
$indirizzo = $_POST['indirizzo'];
$telefono = $_POST['telefono'];
$cellulare = $_POST['cellulare'];
$tesserasanitaria = $_POST['tesserasanitaria'];
$medicorichiedente = $_POST['medicorichiedente'];
$dataprelievo = $_POST['dataprelievo'];
$area = $_POST['area'];
$testomessaggio = $_POST['testomessaggio'];
$mail = $_POST['mail'];
// Creiamo le variabili per il file attachment
$attachment = $_FILES['attachment']['tmp_name'];
$attachment_type = $_FILES['attachment']['type'];
$attachment_name = $_FILES['attachment']['name'];
$headers = "From: " . $to;
// Verifichiamo se è stato eseguito l'upload del file
if (is_uploaded_file($attachment))
{
// usiamo la funzione fopen e fread per aprire e leggere il file e poi chiudiamo con fclose
$file = fopen($attachment,'rb');
$data = fread($file, filesize($attachment));
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 deve divir
dere la parte testuale del messaggio dal file stesso altrimenti riceverete una serie illeggibili di caratteri
*/
$func_rand = md5(time());
$mime_boundary = "==Multipart_divisor_x{$func_rand}x";
// Aggiungo le intestazioni necessarie per l'attachment
$headers .= "\nMIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed;\n";
$headers .= " divisor=\"{$mime_boundary}\"";
// Definisco il tipo di messaggio (MIME/multi-part)
$body .= "This is a multi-part message in MIME format.\n\n";
// Mettiamo il separatore
$body .= "--{$mime_boundary}\n";
// Questa è la parte "testuale" del messaggio
$body .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$body .= "Content-Transfer-Encoding: 7bit\n\n";
$body .= "Cognome: " . $cognome . "\n\n";
$body .= "Nome: " . $nome . "\n\n";
$body .= "Data di nascita: " . $datanascita . "\n\n";
$body .= "Luogo di nascita: " . $luogonascita . "\n\n";
$body .= "Codice Fiscale: " . $codicefiscale . "\n\n";
$body .= "Indirizzo: " . $indirizzo . "\n\n";
$body .= "Telefono: " . $telefono . "\n\n";
$body .= "Cellulare: " . $cellulare . "\n\n";
$body .= "Numero Tessera Sanitaria: " . $tesserasanitaria . "\n\n";
$body .= "Medico richiedente: " . $medicorichiedente . "\n\n";
$body .= "Data in cui intendo effettuare il prelievo: " . $dataprelievo . "\n\n";
$body .= "Luogo in cui si intende effettuare il prelievo: " . $area . "\n\n";
$body .= "Esami da effettuare: " . $testomessaggio . "\n\n";
$body .= "Indirizzo e-mail al quale inviare i risultati: " . $mail . "\n\n";
// Ancora il separatore alla fine del contenuto testuale della mail
$body .= "--{$mime_boundary}\n";
// Adesso aggiungiamo l'allegato alla mail
$body .= "Content-Disposition: attachment;\n";
$body .= " filename=\"{$attachment_name}\"\n";
$body .= "Content-Transfer-Encoding: base64\n\n";
$body .= $data . "\n\n";
// chiudo con il separatore
$body .= "--{$mime_boundary}--\n";
}
else
{
$body .= "Cognome: " . $cognome . "\n\n";
$body .= "Nome: " . $nome . "\n\n";
$body .= "Data di nascita: " . $datanascita . "\n\n";
$body .= "Luogo di nascita: " . $luogonascita . "\n\n";
$body .= "Codice Fiscale: " . $codicefiscale . "\n\n";
$body .= "Indirizzo: " . $indirizzo . "\n\n";
$body .= "Telefono: " . $telefono . "\n\n";
$body .= "Cellulare: " . $cellulare . "\n\n";
$body .= "Numero Tessera Sanitaria: " . $tesserasanitaria . "\n\n";
$body .= "Medico richiedente: " . $medicorichiedente . "\n\n";
$body .= "Data in cui intendo effettuare il prelievo: " . $dataprelievo . "\n\n";
$body .= "Luogo in cui si intende effettuare il prelievo: " . $area . "\n\n";
$body .= "Esami da effettuare: " . $testomessaggio . "\n\n";
$body .= "Indirizzo e-mail al quale inviare i risultati: " . $mail . "\n\n";
}
// Invio la mail
if($cognome=="")
{echo "non hai inserito il cognome "; }else
if($nome=="")
{echo "non hai inserito il nome "; }else
if($datanascita=="")
{echo "non hai inserito la tua data di nascita "; }else
if($luogonascita=="")
{echo "non hai inserito il luogo di nascita "; }else
if($codicefiscale=="")
{echo "non hai inserito il codice fiscale "; }else
if($indirizzo=="")
{echo "non hai inserito l'indirizzo "; }else
if($tesserasanitaria=="")
{echo "non hai inserito il numero della tessera sanitaria "; }else
if($dataprelievo=="")
{echo "non hai inserito la data in cui intendi effettuare il prelievo "; }else
if($area=="")
{echo "area "; }else
if($testomessaggio=="")
{echo "non hai inserito gli esami da effettuare "; }else
if($mail=="")
{echo "non hai inserito l'indirizzo e-mail al quale inviare i risultati "; }
else
if (mail($to, $oggetto, $body, $headers))
{
echo "<em>Mail e allegato inviati correttamente </em>";
}{
echo "<em>torna indietro</em>";
}
?>
<br /><br /><br /><br />
<div style="font-family:arial, verdana;text-align:center;width:100%;"><?=$messaggio?></div>
<p align="center"><input name="newmail" type="button" lang="it" onClick="javascript:history.back()" value="Torna Indietro" /></p>
Ultima modifica di un moderatore: