• User Newbie

    Problema Form Mail PHP

    Salve a tutti,
    ringrazio anticipatamente quanti vorrano darmi qualche consiglio.
    Ho trovato uno script in php per un form mail da aggiungere al mio sito. Non sono un esperto di programmazione 😞 e quindi ho bisogno di aiuto in quanto mi si riscontra un problema che non riesco a risolvere da solo.
    Preavviso che il mio sito si trova su un Hosting Windows Base;
    CARATTERISTICHE PRINCIPALI DEL PACCHETTO
    5 Gb Spazio web WINDOWS
    20 Caselle di posta elettronica
    5 Database MySQL Windows
    5 Domini di 3° livello
    Gestione DNS e NAME SERVER
    Accessi POP3 - IMAP - SMTP
    PHP5 - ASP - ASP.NET
    Antivirus e antispam
    Webmail
    Accesso FTP

    Il mio problema è questo:

    Ho uno script PHP per un form-mail che mi da il seguente problema:
    "PHP Warning: mail() [function.mail]: SMTP server response: 501 5.5.4 Invalid Address in C:\WebSites\miosito.it\form-prenotazioni\gc_formmail.php on line 107"

    Riporto il form:

    <form method="POST" action="...miosito.it/form-prenotazioni/gc_formmail.php">
    <table border="0" cellpadding="3" cellspacing="3" style="border-collapse: collapse" bordercolor="#111111" width="450">
    <colgroup span=1 style="font-family: Verdana; font-size:10pt; font-color: navy; text-align: right"></colgroup>

    <tr>
      <td>
        Nome:
      </td>
      <td>
        <input type="text" name="nome" size="25"></td>
    </tr>
    <tr>
      <td>Cognome: </td>
      <td>
        <input type="text" name="cognome" size="25"></td>
    </tr>
    <tr>
      <td>Email: </td>
      <td>
        <input type="text" name="email" size="25"></td>
    </tr>
    <tr>
      <td>Commento: </td>
      <td><textarea rows="8" name="commento" cols="21"></textarea></td>
    </tr>
    

    </table>
    </center>
    <p align="center"><input type="submit" value="Invia"></p>
    </form>

    Riporto pagina PHP (gc_formmail.php)

    <?
    include "config.php";

    $version = "1.2";
    
    if ($act == 1)
    {
    	echo getCredits();
    
    	return;
    }
    
    $key = array ();
    $val = array ();
    
    $output = "";
    
    $senderNames = array ($senderNames);
    
    foreach($_POST as $chiave=>$valore)
    {
    	// <Input type=qualunque name=chiave value=valore>
    
    	array_push ($key, $chiave);
    	array_push ($val, eregi_replace("\\\\'", "'", $valore));
    	
    	if (!empty($emailField))
    	{
    		if ($chiave == $emailField)
    		{
    			$emailMittente = $valore;
    		}
    	}
    
    	if (!empty($subjectField))
    	{
    		if ($chiave == $subjectField)
    		{
    			$subject = $valore;
    		}
    	}
    
    	if (!empty($senderNames))
    	{
    		for ($i = 0; $i < count ($senderNames); $i++)
    		{		
    			if ($chiave == $senderNames*)
    			{
    				$nome .= $valore." ";
    			}
    		}
    	}
    
    }
    
    if (!empty($subject))
    {
    	$oggetto .= " - ".$subject;
    }
    
    if ($html)
    {
    	$output = getHtmlOutput ($key, $val);
    
    	$intestazioni = "MIME-Version: 1.0\r\n";
    	$intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
    }
    else
    {
    	for ($i = 0; $i < count ($key); $i++)
    	{
    		$output .= $key*.": ".$val*."\n";
    	}
    
    	$intestazioni = "";
    }
    
    if ( (!empty($emailMittente)) || (!empty($nome)) )
    {
    	$intestazioni .= "From: ".$nome."<".$emailMittente."> \r\n";
    }
    else
    {
    	$intestazioni .= "From: ".$mittente."\r\n";
    }
    

    riga 107 if (!mail($destinatari, $oggetto, $output, $intestazioni))
    {
    echo "<br>".$messaggioErrore."<br><br><br>".getHtmlOutput($key, $val)."<br><br><br>".getCredits();

    	if (strlen($paginaErrore) < 5)
    	{
    		exit ();
    	}
    	else
    	{
    	echo "<META HTTP-EQUIV=Refresh CONTENT=\"10; URL=".$paginaErrore."\">";
    	}
    }
    
    echo "<br>".$messaggioConferma."<br><br><br>".getHtmlOutput($key, $val)."<br><br><br>".getCredits();
    
    if (strlen($paginaConferma) < 5)
    {
    	exit ();
    }
    else
    {
    	echo "<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=".$paginaConferma."\">";
    }
    
    
    function getHtmlOutput ($k, $v)
    {
    	global $stripsHtml;
    	global $tagAllowed;
    
    	$return = "<center><div style=\"width: 500; height: 147; text-align: center\">";
    
    	$return .= "<fieldset style=\"font-family: Verdana; font-size: 10pt; color: #008080; font-weight: bold; border: 3px double #F3C65C; background-color: #F4F5FF\">";
    	$return .= "<legend align=center>Dati inseriti</legend>";
    
    
    	$return .= "<table border=0 cellpadding=3 style=\"border-collapse: collapse; font-family:Verdana; font-size:10pt; color:#4062EA\" bordercolor=#111111 cellspacing=5 width=500>";
    	$return .= "<colgroup span=1 style=\"text-align:right; font-weight: bold; background-color: #DDE8FF\"></colgroup>";
    
    
    	for ($i = 0; $i < count ($k); $i++)
    	{
    		$v* = eregi_replace ("\n", "<br>", $v*);
    
    		if ($stripsHtml)
    		{
    			$v* = strip_tags ($v*, $tagAllowed);
    		}
    
    		$return .= "<tr><td width=\"30%\">".$k*.": </td><td>".$v*."</td></tr>";
    	}
    
    	$return .= "</table></fieldset></div></center>";
    
    	return $return;
    }
    
    function getCredits ()
    

    ?>

    Riporto anche il file config:

    <?

    /**
    *	File Di Configurazione
    *	
    *	Tramite questo file è possibile scegliere le opzioni di esecuzione del programma.
    *	Come fare? E' semplice, basta modificare i valori qua sotto.
    *	Fate attenzione a cambiare solo il testo compreso tra le virgolette.
    **/
    
    
    /**
    *	Nome e email del mittente che viene visualizzato nell'email ricevuta. Nella forma: "Nome <[email protected]>"
    **/
    
    $mittente = "Richiesta <info@miosito>";
    
    
    /**
    * 	Nomi e indirizzi email a cui verranno inviati i dati inseriti nel modulo
    *	Se si vuole inviare a più di un destinatario, inserire tutti i destinatari nella stessa forma separandoli con una virgola
    *	es. $destinatari = "Joe Black <[email protected]>, Tim White <[email protected]>";
    **/
    
    $destinatari = "Richiesta <[email protected]>";
    
    
    /**
    *	Oggetto che verrà visualizzato nell'email ricevuta
    **/
    
    $oggetto = "----Informazioni / Preventivi----";
    
    
    /**
    *	Eventuale pagina a cui si sarà reindirizzati automaticamente dopo alcuni secondi dalla visualizzazione della pagina di conferma
    *	Scrivere l'indirizzo della pagina tra le virgolette. Se non è indicata una pagina, non verrà visualizzata semplicemente il mess di conferma
    **/
    
    $paginaConferma = "...miosito.it/form-prenotazioni/grazie.htm";
    
    
    /**
    *	Messaggio/frase (può contenere html) che verrà visualizzato in cima alla pagina di conferma
    **/
    
    $messaggioConferma = "<center><font color=navy size=3 face=verdana><b>Stiamo elaborando i vostri dati</b></font></center><br>";
    
    
    /**
    *	Eventuale pagina a cui si sarà reindirizzati automaticamente dopo alcuni secondi dalla visualizzazione della pagina di errore
    *	Scrivere l'indirizzo della pagina tra le virgolette. Se non è indicata una pagina, non verrà visualizzata semplicemente il mess di conferma
    **/
    
    $paginaerrore = "";
    
    
    /**
    *	Messaggio/frase (può contenere html) che verrà visualizzato in cima alla pagina di conferma
    **/
    
    $messaggioErrore = "<center><font color=red size=3 face=verdana><b>Si è verificato un errore<br>Se il problema persiste contatta l'amministratore del sito!!</b></font><center><br>";
    
    
    /**
    *	Specifica il nome di un campo del form da trattare come indirizzo email del mittente. Ad es. se nel form ho un campo <input type=text name=indirizzoemail> potrò definire "indirizzoemail" come campo email qua sotto
    **/
    
    $emailField = "email";
    
    
    /**
    *	Specifica il nome di un campo del form da trattare come oggetto del mittente. Ad es. se nel form ho un campo <input type=hidden name=tipomodulo value=nuove_proposte> potrò definire "nuove_proposte" come campo subject qua sotto.
    *	Il valore di questo campo sarà visualizzato nell'oggetto dell'email insieme all' "oggetto" specificato sopra. Se si vuole vedere come oggetto solo il valore di questo campo, cancellare il valore di $oggetto definito sopra
    **/
    
    $subjectField = "";
    
    
    /**
    *	Specifica il nome di un campo o più campi del form da trattare come Nome del mittente.
    *	Ad es. se nel form ho un campo <input type=text name=nome> e <input type=text name=cognome> potrò definire "nome" e "cognome" come campo mittente qua sotto.
    *	Separare ogni campo con una virgola e ricordarsi di inserirlo tra virgolette
    **/
    
    $senderNames = "nome, cognome";
    
    
    /**
    *	Se settato a 1, nella pagina di conferma mostra i dati inseriti. Se settato a zero stampa solo il messaggio di conferma senza far vedere ciò che si è inserito
    **/
    
    $mostraInputinConferma = 1;
    
    
    /**
    *	Se settato a 1, le email vengono inviate graficamente in formato html, se settato a 0 in modalità di testo semplice
    **/
    
    $html = 1;
    
    
    /**
    * Se settato a 1, toglie tutti i tag html presenti negli input prima di visualizzarlo graficamente. E' possibile specificare quali tag permettere. Se a 0 permette tag html
    **/
    
    $stripsHtml = 1;
    
    
    /**
    *	Specifica quali tag html sono permessi nel caso in cui il parametro di sopra sia settato a 1
    **/
    
    $tagAllowed = "<b><i><br><u>";
    

    ?>