Ciao a tutti, prima di tutto mi presento essendo il primo post, sono un ragazzo di 26 anni che si sta affacciando ora per la prima volta al mondo del web designin un minimo serio e avrei qualche domanda da sottoporre alla community:
è tutto il giorno che sbatto la testa su un errore dato da un form x invio mail tramite php:
Warning: mail() [function.mail]: SMTP server response: 501 5.5.4 Invalid Address in D:\Inetpub\webs\ecaitaliaeu\joomla\formmail.php on line 69
Errore!
nel dettaglio:
// Invio la mail
if (mail($destinatario, $oggetto, $msg, $headers))
il sito gira su spazio offerto da aruba su SO windows, il php che ho impostato è:
Codice PHP:
<?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 "
Mail inviata con successo!</p>"; }else{ echo "
Errore!</p>"; } ?>
mentre l'htlm è:
codice:
<form action="formmail.php" method="POST" enctype="multipart/form-data"><input type="hidden" name="destinatario" value="jarkheld@libero.it" /> <table border="0"> <tbody> <tr> <td>Tua Mail:</td> <td><input type="text" name="mittente" value="" /></td> </tr> <tr> <td>Oggetto:</td> <td><input type="text" name="oggetto" value="" /></td> </tr> <tr> <td>Messaggio:</td> <td><textarea name="messaggio" rows="4" cols="20"></textarea></td> </tr> <tr> <td>Allega file:</td> <td><input type="file" name="allegato" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="Invia" /></td> </tr> </tbody> </table> </form>
qualcuno sa come aiutarmi?!
grazie in anticipo!