• 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