- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Risolto] Problema con form mail
-
[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.
-
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
-
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.
-
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
-
Scusami, dato che non sono molto esperto di php, potresti aiutarmi a modificare il codice in modo che funzioni? Grazie ancora
-
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
-
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.
-
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>