- Home
- Categorie
- Coding e Sistemistica
- PHP
- Modulo per invio mail invia solo con certe mail
-
Modulo per invio mail invia solo con certe mail
Ciao a tutti!!! Ho bisogno di una mano riguardo ad uno script php per l'invio delle mail dal mio sito.
Ho fatto il form e assegnato i vari nomi e poi creatola pagina invio.php; inserisco tutti i dati e carico su uno spazio web gratuito per fare il test........ e qui succede una cosa molto bizzarra!!!
Il form è formato da 5 campi:
- Nome
- Cognome
- Oggetto
- Testo
Bene, lo script fa il suo dovere. Le mail partono e arrivano correttamente, a patto che nel campo della mail non ci sia una mail di yahoo!!! :?:?Perchè si comporta così?? Il campo mail è un semplice campo di testo, non fa nessun check su questo campo, eppure se scrivo mail@dominio la mail arriva... se invece scrivo mail@yahoo della mail nemmeno l'ombra!!!
Chi mi sa dare una spiegazione?? Di seguito il codice.
contatti.php:
[PHP]<form action="invio.php" method="post" id="modulo">
<textarea name="body" cols="30" rows="5" id="body"></textarea>
<!-- INSERISCI NOME -->
<input name="nome" type="text" id="nome" placeholder="Nome" onclick="this.placeholder='';" onblur="if (this.placeholder=='') this.placeholder='Nome';" /><br /><!-- INSERISCI COGNOME --> <input name="cognome" type="text" id="cognome" placeholder="Cognome" onclick="this.placeholder='';" onblur="if (this.placeholder=='') this.placeholder='Cognome';" /><br /> <!-- INSERISCI MAIL --> <input name="mail" type="text" id="mail" placeholder="Tua Mail" onclick="this.placeholder='';" onblur="if (this.placeholder=='') this.placeholder='Tua Mail';" /><br /> <!-- INSERISCI OGGETTO --> <input name="object" type="text" id="object" placeholder="Motivo del contatto" onclick="this.placeholder='';" onblur="if (this.placeholder=='') this.placeholder='Motivo del contatto';" /><br /> <input class="button_send" type="submit" name="submit" id="submit" value="Invia" /> <input class="button_del" type="reset" name="cancella" id="cancella" value="Ripristina" /> </form>[/PHP]
invio.php:
[PHP]
<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 = "lamiamail";
$headers = "From: " . $_POST['mail'] . "\n";
// soggetto della mail
$subject = "Modulo proveniente da tuosito";
// 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 .= trim(stripslashes($_POST["body"])) . "\n"; //messaggio
$body .= "Mittente: " . trim(stripslashes($_POST["nome"])) . "\n";// invio mail
mail($to, $subject, $body, $headers); // SE L'INOLTRO E' ANDATO A BUON FINE...echo "La mail è stata inviata con successo. Grazie per averci contattato";
} else {// altrimenti
echo "Deve compilare la form prima di inviare.";
}
?></body></html>
[/PHP]
-
Effettivamente dallo script non emergono motivi di questo strano comportamento.
Ho provato a caricarlo sia in locale che su server remoto e non mi ha dato alcun tipo di problema: le mail sono partite anche se scrivevo mail@yahooChe server gratuito usi?
-
altervista... ho caricato praticamente online il sito.. ho sbagliato? è la prima volta che lo faccio di solito testo tutto in locale..
Edit. lo fa solo se il dominio yahoo è .com... con .it funziona
-
Sinceramente non ho provato con .it e .com
Ho scritto mail@yahoo come da te indicato e ovviamente tutto funzionava. Ora ho già cancellato i tuoi file dai server.
La cosa sicura è che non dipende da te ma dal server, dovresti contattare quelli di altervista e chiedere a loro. probabilmente è qualche loro impostazione antispam o similari.
-
ho capito.. si scusa mi ero spiegato male è che se lasciavo il .com mi diceva che avevo inserito link attivi (non so perchè) quindi lo avevo tolto, pensavo fosse sottinteso sorry.. comunque chiederò a loro.. una domanda.. se io volessi testarlo in locale con MAMP che procedura devo seguire??
-
Con Mamp non lo so perchè non l'ho mai usato non avendo il Mac (e neanche lo voglio).
Qui ho indicato una procedura che funziona per Xampp giorgiotave.it/forum/php-mysql/220187-xampp-e-invio-email-locale.html Prova a vedere se è adattabile per Mamp.
-
Grazie mille!
-
Scusate se mi intrometto nella discussione, ma anche io ho avuto parecchie beghe nell'invio di email a domini tipo hotmail, yahoo libero etc e come detto da oslino il problema è il server. Mi sembra anche chiaro che contattare un servizio gratuito come altervista, è abbastanza improbabile che ti aiutino.
Però esiste una bella soluzione e si chiama PHPMailer. Grazie a PHPMailer puoi impostare tra i suoi parametri il server smtp che gestirà l'invio della posta e dato che tutti abbiamo una email gmail, quale miglior server smtp se non quello di Google?
Se vuoi ulteriori delucidazioni, chiedi pure!
-
[FLASH][/FLASH]Si ma il problema non è nella mail che riceve.. Forse ho capito male il tuo messaggio.. Io ho messo il mio indirizzo Gmail come casella dove ricevere.. Chi va nel sito compila i campi.. E mi manda una mail.. Però se nel campo e-mail mette un indirizzo che come dominio ha yahoo .com la mail non arriva.. Non da nessun errore.. Ma non arriva.. Solo con quel dominio.. Già se cambia in yahoo .it la mail arriva.
magari ho capito male cosa stavi cèrcando di dirmi
-
Cerco di spiegarmi meglio. Con quella funzione te dai al server la possibilità di inviarti una email. E parlo del server di altervista. È evidente che tale server ha qualche problema con il servizio di yahoo.com.
Ora, grazie alla classe phpmailer puoi impostare un server smtp esterno al server di altervista che ti invia la posta. Quindi non utilizzerai piu il server di altervista per l'inoltro, ma quello di gmail o hotmail o quelle che vuoi.
Capito meglio adesso? Forse mi ero espresso male. Sappi che imparando ad usare quella classe puoi permetterti di inviare email anche da server con ip in blacklist.
Provala fidati! Io mi sono tolto numerose beghe.
-
Grazie mille proverò sicuramente!! È la prima volta che metto questa cosa in un sito quindi sono già abbastanza soddisfatto di esserci arrivato.. grazie ancora per il consiglio!
-
Buongiorno a tutti,
sono nuovo del forum, mi sono iscritto proprio per cercare una soluzione al problema sopra descritto.
In diversi siti web mi capita quanto descritto usando un form php per l'invio di un messaggio. Infatti, se come mittente viene indicato un utente he usi xxxATyahooDOTit o .com quel messaggio non viene recapitato.
Ma questo accade solo se ricevo la posta su gmail, ricevendola per esempio su tiscali quel messaggio viene inoltrato.
Quindi, evidentemente, è gmail che blocca il messaggio se proviene da un mittente yahoo.
Non c'è traccia del messaggio mancante nello spam; uso diversi hosting e diversi form php; ho provato anche con SMTP e succede sempre la stessa identica cosa.
Ho provato a leggere le policy DMARC ma non trovo nulla di preciso.
Qualcuno può aiutarmi quantomeno a capire cosa accade ?
Grazie.