• User Newbie

    problema mail() form php

    Ho un problema con un form di invio mail da web, se non sbaglio il form l'ho preso proprio da forum gt, mi da questo errore:
    [php]Warning: mail() [function.mail]: SMTP server response: 501 5.5.4 Invalid Address in D:\Inetpub\webs\fotovoltaicoitalianet\web\mail\formmail.php on line 89
    [/php]Allego i codici del form per capirci qualcosa^^

    formmail.php
    [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";
    }
    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="10; URL=".$paginaConferma."">";
    }

    function getHtmlOutput ($k, $v)
    {
    global $stripsHtml;
    global $tagAllowed;
    $return = "<center><div style="width: 322; 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=300>";
    $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 ()
    {
    global $version;
    $return = "<br><br>
    <center> <p><a href="giuseppecalbi.com/scripts/GC_Formmail" style="text-decoration: none">
    <font face=Verdana size=1 color=#FFFFFF><b>".$version."</b></a><br>
    <br>
    ".$version."></p>
    </center></font>";
    return $return;
    }
    /*

    • To Do:
      • Limite inserimento ogni n secondi o n richieste al minuto
      • Messaggio di conferma al mittente. Più complicato, potrebbe essere hackerato e diventerebbe minaccia seria.
        /
        /
    • Changelog:
    • 1.2 (21/2/05)
      • Configuration file
      • Documentation
      • Other few changes
    • 1.12 (19/2/05)
      • Removed backslash before char "'".
      • In html output and mail, \n becomes <br>
      • Possibility to strips (all or some) html tags from html ouput
      • Possibility to set some field names as Name and Email Address of mail received
      • Possibility to set a field as subject after that set in "$oggetto"
      • Button green/red to see updates
    • 1.11 (18/2/05)
      • Added Html Email Format
        */

    ?>[/php]config.php
    [php]<?
    $mittente = "Utente dal sito Fotovoltaico [email protected]";

    /**

    /**

    • Oggetto che verrà visualizzato nell'email ricevuta
      **/
      $oggetto = "----Messaggio inviato dal sito Fotovoltaico----";

    /**

    • 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 = "fotovoltaicoitalia.net";

    /**

    • Messaggio/frase (può contenere html) che verrà visualizzato in cima alla pagina di conferma
      **/
      $messaggioConferma = "<center><font color=navy size=3 face=verdana><b>Il messaggio è stato inviato correttamente. Grazie per averci contattato.</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>";

    ?>[/php]Grazie a chiunque possa darmi una mano.^^


  • Consiglio Direttivo

    Ciao FuRy_Dr4gOn.

    Hai provato a cambiare nel config questo:
    [PHP]$destinatari = "FotovoltaicoItalia.net [email protected]";[/PHP]

    Con questo?
    [PHP]$destinatari = "[email protected]";[/PHP]
    🙂


  • User Attivo

    if ( (!empty($emailMittente)) || (!empty($nome)) )
    {
    $intestazioni .= "From: ".$nome."<".$emailMittente."> \r\n";
    }Ciao FuRy_Dr4gOn,
    mi pare che la condizione dovrebbe essere un AND logico, non OR.

    prova così:
    [php] if ( (!empty($emailMittente)) && (!empty($nome)) )
    {
    $intestazioni .= "From: ".$nome."<".$emailMittente."> \r\n";
    }[/php]Ciao