• User Attivo

    [Risolto] Problema con form mail

    Poco tempo fa presi un form mail proprio qui su gt era questo:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    </head>
    <body>
    <?php
      // indirizzo di chi riceve la mail è sottolineato ma nel codice non sottilineatelo 
     if ((trim($_POST['object']) != "") && (trim($_POST['body']) != "")) {    //questo fa si che se i campi "oggetto" e "messaggio" sono vuoti la form non invia nessuna mail
      $to = "      \n [email protected]      , deve abilitare Javascript per vederlo    ";
    $headers = "From: " . $_POST['mail'] . "\n";
      // soggetto della mail
      $subject = "Modulo proveniente da mio sito";
      
      // corpo messaggio
      $body = "Contenuto del modulo:\n\n";
      
    $body .= "Inviata da: " . trim(stripslashes($_POST["mail"])) . "\n"; //indirizzo e-mail che manda la mail, come si vede riprende l'id del campo destinato all'inserimento della mail del mittente
      
      $body .= "Oggetto: " . trim(stripslashes($_POST["object"])) . "\n"; //oggetto del messaggio
      $body .= "testo: " . trim(stripslashes($_POST["body"])) . "\n"; //messaggio
      
      
      // invio mail
      mail($to, $subject, $body, $headers); // SE L'INOLTRO E' ANDATO A BUON FINE...
      
      echo "<FONT 
    					COLOR=\"red\"
    					FACE=\"courier new\">
    						<B>
    							<center>
    								Email inviata correttamente <br>
    								La ringraziamo per averci contattato <br><br>
    								Sarai riportato all'home page tra 4 secondi
    							</center>
    						</b>
    				</font>";
      
      } else {// altrimenti
      echo "Deve compilare la form prima di inviare.";
      
      }
      
      ?>
    <!-- QUI INVECE REINDIRIZZO L'UTENTE DOPO 4 SECONDI ALLA PAGINA CHE VOGLIO -->
    <script language="JavaScript" type="text/javascript">
    window.setTimeout ("location.href=('mio sito')", 4000);
    
    // -->
    </SCRIPT>
    </body>
    </html>
    
    

    Sullo spazio altervista funzionava a meraviglia, ma oggi ho provato a metterlo in uno spazio windows e non mi invia l'email e mi da questo errore:

    PHP Warning: mail() [function.mail]: SMTP server response: 501 5.5.4 Invalid Address in C:\WebSites\miodominio.com_xxxxxxxxxxxxx\invioa.php on line 26
    
    

    In un altro form mail nello stesso sito anche questo funzionava perfettamente su altervista, su questo spazio mi da questo errore

    PHP Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\WebSites\miodominio.com_xxxxxxxxxxxx\invio.php on line 29
    

    Ragazzi sto impazzendo, c'è qualcuno in grado di aiutarmi? Grazie a tutti.


  • User Attivo

    Ciao,
    su server windows il parametro TO deve contenere solo l'indirizzo email.
    Correggi:
    [PHP]
    $to = " \n [email protected] , deve abilitare Javascript per vederlo ";
    [/PHP]
    con
    [PHP]
    $to = "[email protected]";
    [/PHP]

    Per l'altro script non so che dirti... dovresti postare il codice.

    Alessandro


  • User Attivo

    Sei un grande davvero, quello di prima funziona funziona, puoi aiutarmi anche con questo?

    <?php
    // DICHIARO LE VARIABILI CHE POI RICHIAMERO NEL BODY'
    	$oggi = date("j F Y G:i");
    	$oggetto = "Invio Email da $sito";
    	$browser = $_SERVER['HTTP_USER_AGENT'];
    	$ip = $_SERVER['REMOTE_ADDR'];
    	$sito = "mio sito"; // QUI INSERISCI IL NOME DEL TUO SITO
    	$inviato_a = "[email protected]"; // QUI INSERISCI LA TUA EMAIL
    
    	//ESEGUO UN CONTROLLO PER VEDERE SE L'UTENTE SI DIMENTICA DI INSERIRE I DATI IN UN CAMPO
    	if(trim($_POST['nick']) == "" 
    		OR trim($_POST['prezzo']) == ""
                    OR trim($_POST['quantità']) == ""
                    OR trim($_POST['scopo']) == ""
    		OR trim($_POST['metodo']) == ""
    		OR trim($_POST['scadenza']) == "") {
    	// SE SI DIMENTICA STAMPO UN MESSAGGIO DI ERRORE E  TORNA INDIETRO
    		echo "<font color=\"#FF0000\" face=\"comic sans ms\" size=\"2\"
    				Controlla di aver inserito i dati nei campi obbligatori";
    		echo "<a href=\"annuncio.html\"> Torna Indietro </a>";
    	// E QUI BLOCCO LO SCRIPT FORZANDOLO AD USCIRE E A NON PROSEGUIRE!
    		exit();
    	} else {
    	// ALTRIMENTI (ELSE) PROSEGUO PER L'INVIO EMAIL!
    	$body = "Modulo inviato il : $oggi - Da : $browser - Indirizzo Ip : $ip \n\n";
    	$body .= "Nick Usato dal Forum : $_POST[nick] \n sito : $_POST[sito] \n Visite : $_POST[visite] \n categoria : $_POST[categoria]\n Scopo : $_POST[scopo] \n Voglio Vendere/acquistare: $_POST[vendita] \n Altro : $_POST[come] \n Con : $_POST[metodo] \n Dettagli : $_POST[dettagli] \n Quantità : $_POST[quantità] \n Scadenza Annuncio : $_POST[scadenza] \n Prezzo : $_POST[prezzo]"; 
    	
    	mail("$inviato_a","$oggetto","$body");
    	}
    	// QUI DO LA CONFERMA ALL'UTENTE CHE L'EMAIL E' STATA INVIATA
    	echo "<TABLE borderColor=BLACK  cellSpacing=0 cellPadding=2 width=\"50%\" align= center border=0 BGCOLOR=\"FFFFCC\">
    		<tr>
    			<td>
    				<FONT 
    					COLOR=\"red\"
    					FACE=\"courier new\">
    						<B>
    							<center>
    								Email inviata correttamente <br>
    								La ringraziamo per averci contattato <br><br>
    								Sarai riportato all'home page tra 4 secondi
    							</center>
    						</b>
    				</font>
    			</td>
    		</tr>
    	</table>";
    	
    ?>
    <!-- QUI INVECE REINDIRIZZO L'UTENTE DOPO 4 SECONDI ALLA PAGINA CHE VOGLIO -->
    <script language="JavaScript" type="text/javascript">
    window.setTimeout ("location.href=('miosito')", 4000);
    
    // -->
    </SCRIPT>
    
    
    

    Ti ringrazio tantissimo.


  • User Attivo

    Ciao,
    in questo manca l'header con il parametro From, così come l'errore che hai riportato nel primo post ti segnala:

    ... custom "From:" header missing ...
    

    In pratica non puoi inviare email senza mittente.
    Quando utilizzi la funzione mail() il parametro header è obbligatorio e deve contenere almeno il "From", come puoi vedere nel primo script.

    Alessandro


  • User Attivo

    Scusami, dato che non sono molto esperto di php, potresti aiutarmi a modificare il codice in modo che funzioni? Grazie ancora


  • User Attivo

    Ciao,
    ti basta confrontare la chiamata alla funzione mail() nei due script per vedere cosa manca:
    [php]
    mail($to, $subject, $body, $headers); //Primo script
    mail("$inviato_a","$oggetto","$body"); //Secondo script
    [/php]
    Come puoi vedere nel primo caso vengono passati alla funzione 4 parametri, mentre nel secondo solo 3.

    Devi quindi definire un header e passarlo come quarto parametro:
    [php]
    $headers="From: [email protected]";

    mail("$inviato_a","$oggetto","$body" , $headers);
    [/php]

    Alessandro


  • User Attivo

    Finalmente ci sono riuscito, grazie mille Ale se non era per te stavo ancora con il sito offline, non so davvero come ringraziarti, per qualsiasi cosa sono a disposizione.


  • User

    Ciao
    perdonami se posto in coda a una richista risolta. Il mio problema è quasi lo steso. Sono su un server Windows di Mr Domain. Circa un mese fa hanno avuto un piccolo problema e mi hanno spostato. Il problema che aveto testato questo codice e funzionava perfettamente mentre adesso mi da l'errore sopracitato
    PHP Warning: mail() [function.mail]: SMTP server ** response: 501 5.5.4 Invalid Address in C:\WebSites\

    ho visto nel codice che è presente /n ma non riesco a modificarlo per farlo finzionare. Quando era tutto ok supportava anche un doppio indirizzo di invio.
    Grazie a chi riesce a darmi un aiuto
    Ecco il codice

    <?
    $subject="from ".$_GET['nomi'];
    $subject="from ".$_GET['message'];

    $subject="from ".$_GET['your_email'];
    $subject="from ".$_GET['data_riceviemnto'];

    $subject="from ".$_GET['telefono'];

    $subject="from ".$_GET['location'];

    $subject="from ".$_GET['consenso'];
    $subject="from ".$_GET['non_consento'];
    $subject="Richiesta informazioni per un ricevimento il ".$_GET['data_ricevimento'];

    $headers= "From: ".$_GET['your_email']."\n";
    $headers.='Content-type: text/html; charset=iso-8859-1';
    mail("[email protected]", $subject, "
    <html>
    <head>
    <title>Contact letter</title>
    </head>
    <body>

    <br>
    <strong> Questa richiesta è Arrivata dalla email:</strong> ".$_GET['your_email']."
    <br>
    <br>
    <strong>Nome:</strong> ".$_GET['nomi']."
    <br><br>
    <strong>Indirizzo email:</strong> ".$_GET['your_email']."
    <br><br>

    <strong>Indirizzo email:</strong> ".$_GET['telefono']."
    <br><br>

    <strong>Data del Ricevimento:</strong> ".$_GET['data_ricevimento']."
    <br><br>

    <strong>Accetto i termini:</strong> ".$_GET['consenso']."
    <br><br>

    <strong>Non accetto i termini:</strong> ".$_GET['non_consento']."
    <br><br>

    <strong>Messaggio dall'utente: </strong> ".$_GET['message']."
    <br><br>
    </body>
    </html>" , $headers);
    echo ("<strong>Grazie. L'E-Mail è stata inviata correttamente. Riceverete una risposta entro 24 ore. Se volete scrivere ad un'altra struttura tornate indietro </strong>");
    ?>
    <script>
    resizeTo(700, 700)
    //window.close()
    </script>