- Home
- Categorie
- Coding e Sistemistica
- PHP
- Email non si invia
-
Email non si invia
Compilato il form invio ma la mail di notifica non parte nonostante esce che l'invio è partito
[PHP]
...if($errore==""){
echo "Il tuo ordine è stato inviato"
}
else {
echo $errore;$headersG1 = "MIME-Version: 1.0\r\n";
$headersG1 .= "content-type: text/html; charset=utf-8\r\n";
$headersG1 .= "X-Mailer: PHP\n";
$headersG1 .= "From: Me stesso [email protected]\r\n";//Invio email di avviso a me
$meG = "Me [email protected]";
$oggettoG = "Grazie";
$messaggioM = "<html>
<head>
</head>
<body>
<table>
<tr>
<td>
<i>$messaggioG</i></div>
</td>
</tr>
</table>
</body>
</html>";
//Invio dell'email
mail ($meG,$oggettoG,$messaggioM,$headersG1);
}
}
?>
//QUI CI STA IL FORM[/PHP]
-
Ciao,
in $meG devi mettere solamente il tuo indirizzo email.
-
@Thedarkita said:
Ciao,
in $meG devi mettere solamente il tuo indirizzo email.Così non va bene? non ho capito cosa intendi
$meG = "Me [email protected]";
-
No, deve essere:
$meG = "[email protected]";
-
@Thedarkita said:
No, deve essere:
$meG = "[email protected]";Nemmeno così funziona, in altri form funziona tutto, qui non parte neanche. A me il codice sembra posizionato giusto.
-
Riguardo l'impostazione del destinatario dell'e-mail devo dire che avete ragione entrambi: consultando il manuale ( php.net/manual/it/function.mail.php ) @Apthu ha scritto una sintassi corretta in base all'«Example #4 Invio di mail complessa», mentre @Thedarkita ha ragione per i vari esempi precedenti.
Personalmente uso una piccola variante rispetto a quella di @Apthu in modo tale che il nome del destinatario sia tra virgolette.Sul fatto che non sia partita l'e-mail mi lascia pensare che @Apthu abbia usato un dominio gratuito di terzo livello con la funzione mail() disabilitata dall'hoster.
-
In realtà non è vero, è la versione italiana della guida ad essere errata:
As such, the to parameter should not be an address in the form of "Something [email protected]". The mail command may not parse this properly while talking with the MTA.
Trovi l'esempio corretto nella documentazione in lingua inglese:
http://php.net/manual/en/function.mail.php
-
Mi sembra strano e ti faccio vedere con quest'immagine ( i61.tinypic.com/9le3ih.jpg ) il perché non mi torna.
Rimane ben inteso che è necessario usare correttamente gli apici e le virgolette come già avevo lasciato intendere precedentemente, altrimenti avviene il pasticcio.
-
Dipende dall'ambiente, non funziona ovunque correttamente. Infatti nella versione inglese è più o meno spiegato.
Visto che lui ha un problema, quella per quanto mi riguarda è la prima cosa da provare per vedere se risolve o meno.Se ci dice dove sta provando lo script, riusciamo a capire qualcosa in più sul problema.
-
Questo codice lo sto usando su vari form e funziona, su questo nuovo sito ho 2 form, l'altro funziona, questo no, forse vanno in conflitto
-
Che vadano in conflitto è impossibile se sono 2 cose separate.
Puoi postare il codice attuale?Dicci anche se è linux o windows
-
Su Linux funziona, su Windows dovrei riprovare.
Questo è il frammento di codice più importante che genera l'immagine postata precedentemente:[PHP]
$to = '"Owner xxxxxxxxxxxxxxxx" <'.$dest.'>';
$headers = 'From: "xxxxxxxxxxxxx htaccess modifyer" <'.$source.'>';
$subject = "Aggiornamento htaccess";
…
mail ($to, $subject, $message, $headers);
[/PHP]Addendum:
mi riferisco solo al mio codice non a quello di @Apthu
-
@Thedarkita said:
Che vadano in conflitto è impossibile se sono 2 cose separate.
Puoi postare il codice attuale?Dicci anche se è linux o windows
Uso mac, www.libridelbenessere.altervista.org il form Contatti funziona, quello sotto del Modulo ordine non si invia
-
Dipende dalle configurazioni Mentecritica, non è un semplice windows = non funziona.
Apthu mi riferivo al server se era windows o linux, visto che è altervista è sicuramente linux. Puoi ripostare anche il codice che non funziona?
-
L'avevo postato all'inizio (accorciato)
-
@Thedarkita said:
Dipende dalle configurazioni Mentecritica, non è un semplice windows = non funziona.
Non mi riferivo assolutamente a quell'associazione, mentre ci sono alcune funzioni di PHP che sotto Windows non sono disponibili nonostante il codice sia lo stesso ripreso dal server Linux, per esempio file_put_contents(), poi ci sono dei casi rari più critici, poi dipende da come Apthu ci mostrerà il codice completo, altrimenti qui parliamo solo per ipotesi.
-
Questa è la pagina completa, sembra a posto
<?php
//Richiama i parametri di connessione al db
require_once "connessione.php";
include ("funzioni1.php");if(isset($_POST['inviaG'])) {
$data_locale = time(); //Stampa nel db la data numerica es. 1360585588
$nomeG = htmlspecialchars(addslashes(ucfirst(trim($_POST['nomeG']))));
$cognome = htmlspecialchars(addslashes(ucfirst(trim($_POST['cognome']))));
$via = htmlspecialchars(addslashes(ucfirst(trim($_POST['via']))));
$n = htmlspecialchars(addslashes(ucfirst(trim($_POST['n']))));
$loc = htmlspecialchars(addslashes(ucfirst(trim($_POST['loc']))));
$pro = htmlspecialchars(addslashes(ucfirst(trim($_POST['pro']))));
$cap = htmlspecialchars(addslashes(trim($_POST['cap'])));
$naz = htmlspecialchars(addslashes(ucfirst(trim($_POST['naz']))));
$email = htmlspecialchars(strtolower($_POST['email']));
$email = str_replace(" ","",$email); // Toglie gli spazi interni nell'email
$tel = htmlspecialchars(addslashes(trim($_POST['tel'])));
$messaggioG = htmlspecialchars(addslashes(ucfirst(trim($_POST['messaggioG']))));
$validatorG = htmlspecialchars(trim($_POST['validatorG']));$_SESSION['nomeG'] = $nomeG;
$_SESSION['cognome'] = $cognome;
$_SESSION['via'] = $via;
$_SESSION['n'] = $n;
$_SESSION['loc'] = $loc;
$_SESSION['pro'] = $pro;
$_SESSION['cap'] = $cap;
$_SESSION['naz'] = $naz;
$_SESSION['email'] = $email;
$_SESSION['tel'] = $tel;
$_SESSION['messaggioG'] = $messaggioG;//dichiaro la variabile e la rendo vuota, altrimenti da errore
$errore = '';//strlen = numero di byte occupati dalla stringa, questo significa compresi gli spazi interni fra le parole
if (strlen($nomeG) > 20) {
$errore .= "• NOME: max 20 caratteri<br><br>";
}
if (strlen($cognome) > 30) {
$errore .= "• COGNOME: max 30 caratteri<br><br>";
}
if (strlen($via) > 30) {
$errore .= "• VIA: max 30 caratteri<br><br>";
}
if (strlen($n) > 10) {
$errore .= "• N°: max 10 caratteri<br><br>";
}
if (strlen($loc) > 30) {
$errore .= "• LOCALITÀ: max 30 caratteri<br><br>";
}
if (strlen($pro) > 30) {
$errore .= "• PROVINCIA: max 10 caratteri<br><br>";
}
if (strlen($cap) > 10) {
$errore .= "• CAP: max 10 caratteri<br><br>";
}
if (strlen($naz) > 20) {
$errore .= "• NAZIONE: max 20 caratteri<br><br>";
}
if (strlen($email) > 320) {
$errore .= "• EMAIL: max 320 caratteri<br><br>";
}
if (strlen($tel) > 20) {
$errore .= "• TEL: max 20 caratteri<br><br>";
}
// Non conteggia le new line
if (strlen(str_replace(array("\n", "\r"),"", $messaggioG)) > 200) {
$errore .= "• MESSAGGIO: max 200 caratteri<br><br>";
}
if (strlen($validatorG) > 4 ) {
$errore .= "• CODICE: max 4 caratteri<br><br>";
}//Nome (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($nomeG == "") {
$errore .= "• Inserire il Nome<br><br>";
}
}
//Cognome (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($cognome == "") {
$errore .= "• Inserire il Cognome<br><br>";
}
}
//Via (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($via == "") {
$errore .= "• Inserire la Via<br><br>";
}
}
//Numero (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($n == "") {
$errore .= "• Inserire il Numero<br><br>";
}
}
//Località (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($nome == "") {
$loc .= "• Inserire la Località<br><br>";
}
}
//Provincia (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($pro == "") {
$errore .= "• Inserire la Provincia<br><br>";
}
}
//CAP (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($cap == "") {
$errore .= "• Inserire il CAP<br><br>";
}
}
//Valida email (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($email == "") {
if (!preg_match("/^^.-([-][^.-])?([.]?[^.-])@(.*)^.$/",$email)) {
$errore .= "• Inserire l'email<br><br>";
}
}
}
//Telefono (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($tel == "") {
$errore .= "• Inserire il Telefono<br><br>";
}
}
//Validatore (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($validatorG == "") {
$errore .= "• Inserire il Codice<br><br>";
}
}
//Controlla che il codice Captcha inserito corrisponda a quello che appare nell'immagine
if(!empty($_POST['inviaG'])) {
if ($_SESSION['rand_code'] != strtolower(trim($_POST['validatorG']))) {
$errore .= "• Codice errato!<br><br>";
}
}
if($errore==""){
echo "<div class="traspG"></div><div class="inviatoG"><div style="margin-top:25px; margin-bottom:30px; text-align:center;"><img src="immagini/ok.png" width="60" height="60" alt="Ok" title="Ok"></div><span style="font-size:19px;">Il tuo ordine è stato inviato!</span></div>";
echo "<meta http-equiv='refresh' content='1; url=".htmlspecialchars($_SERVER['PHP_SELF']) ."'>";
}
else {
echo "<div class="traspG"></div><div class="alertG"><div style="margin-top:25px;margin-bottom:30px;text-align:center;"><img src="immagini/alert.png" width="70" height="70" alt="Alert" title="Alert"></div>$errore</div>";
echo "<meta http-equiv="refresh" content="1; url=".htmlspecialchars($_SERVER['PHP_SELF'])."?#segnalibroOrdine">";//Questo codice se il campo è vuoto mette a video la barretta IN MAIL
if ($naz == '') {
$naz =" -";
}$headersG = "MIME-Version: 1.0\r\n";
$headersG .= "Content-type: text/html; charset=utf-8\r\n";
$headersG .= "X-Mailer: PHP\n";
$headersG .= "From: Libridelbenessere [email protected]\r\n";$headersG1 = "MIME-Version: 1.0\r\n";
$headersG1 .= "content-type: text/html; charset=utf-8\r\n";
$headersG1 .= "X-Mailer: PHP\n";
$headersG1 .= "From: $email;\r\n";//Invio email di avviso a me
$meG = "Me [email protected]";
$oggettoG = "Qualcuno ha fatto l'ordine"; //Le email vanno formattate con HTML
$messaggioM = "<html>
<head>
</head>
<body>
<table>
<tr>
<td>
<br>
<br>
<br>
<div style="width:auto;height:4px;"><span style="color:#666666">Nome:</span> $nome</div>
<br>
<div style="width:auto;height:4px;"><span style="color:#666666">Cognome:</span> $cognome</div>
<br>
<div style="width:auto;height:4px;"><span style="color:#666666">Via:</span> $via</div>
<br>
<div style="width:auto;height:4px;"><span style="color:#666666">n°:</span> $n</div>
<br>
<div style="width:auto;height:4px;"><span style="color:#666666">Località:</span> $loc</div>
<br>
<div style="width:auto;height:4px;"><span style="color:#666666">Provincia:</span> $pro</div>
<br>
<div style="width:auto;height:4px;"><span style="color:#666666">CAP:</span> $cap</div>
<br>
<div style="width:auto;height:4px;"><span style="color:#666666">Nazione:</span> $naz</div>
<br>
<div style="width:auto;height:4px;"><span style="color:#666666">Email:</span> $email</div>
<br>
<div style="width:auto;height:4px;"><span style="color:#666666">Telefono:</span> $tel</div>
<br>
<div style="width:auto;height:4px;"><span style="color:#666666">Note:</span> $messaggioG</div>
<br>
<div style="width:auto;height:4px;"><span style="color:#666666;">Ip:</span> <span style="font-family:arial;font-size:13px;">$ip</span> <img style=" border-right:1px solid #9c9e95; border-bottom:1px solid; width:16px; height:12px; vertical-align:-13%;" src="http://libridelbenessere.altervista.org/$file_to_check" alt="".$countries[$two_letter_country_code][1]."" title="".$countries[$two_letter_country_code][1].""> ".$countries[$two_letter_country_code][1]."</div>
<br>
<br>
<div style="width:auto;height:4px;"><span style="color:#666666;">Modulo ordine</span></div>
<br>
<br>
<i>$messaggioG</i></div>
<br>
<br>
<br>
<tr>
<td>
<div style="width:auto;height:auto;font-family:arial;font-size:11px;color:#000080;">".crea_dataG($data_locale)."</div><br>
<br>
<br>
</td>
</tr>
</td>
</tr>
</table>
</body>
</html>";
//Invio dell'email
mail ($meG,$oggettoG,$messaggioM,$headersG1);//Invio email di ringraziamento al Visitatore
$visitorG1 = "$email";
$oggettoG1 = "Riassunto ordine libri";
$messaggioM1 = "<html>
<head>
</head>
<body>
<table>
<tr>
<td>
<p style="font-family:arial;font-size:17px;color:#000080;font-weight:bold;">- RISPOSTA AUTOMATICA -</p>
</td>
</tr>
<tr>
<td>
<p style="font-family:arial;font-size:11px;color:#000080;">".crea_dataG($data_locale)."</p>
</td>
</tr>
<tr>
<td>
<p style="font-family:arial;font-size:14px;padding-top:15px;">
<br>
Grazie <b>$nome</b>,
<br>
<br>
questo è il riassunto del tuo ordine. Riceverai la merce nel giro di qualche giorno.
<br>
<br>
$messaggioM
<br>
A presto
<br>
<a href="http://libridelbenessere.it" style="font-family:arial;font-size:13px;color:#0000ff;text-decoration:none;">www.libridelbenessere.it</span></a>
</p>
</td>
</tr>
</table>
</body>
</html>
<br>
<br>";
//Invio dell'email
mail($visitorG1,$oggettoG1,$messaggioM1,$headersG);
}
}
?>
<div id="containerBig">
<a id="segnalibroOrdine"><span style="width: auto; height: auto; font-size: 2.5em; color: #e67300;">Modulo Ordine</span></a>
<br>
<br>
<br>
<span style="font-size: 1.2em;">Compila il modulo con i dati esatti dell'<span style="color: #ff0000">indirizzo di destinazione libri.</span></span>
<br>
<br>
<div style="font-size: 1.2em; text-align: left; padding-left: 15px;">Assieme ai tuoi dati s'invierà anche l'ordine che hai nel carrello.</div>
<br>
<br>
<span style="font-size: 1em;">(Diritto di recesso, vedi DL n. 21 del 21 febbraio 2014)</span>
<br>
<br>
<br>
<!-- INIZIO FORM-->
<form method="post" name="mioformGx" id="mioG" action="<?php echo $_SERVER['PHP_SELF'];?>" onsubmit="return (nomeCampoG() && cognomeCampoG() && viaCampoG() && nCampoG() && locCampoG() && proCampoG() && capCampoG() && telCampoG() && emailCampoG() && validatoreCampoG());"><fieldset id="contenuto"> <br> <label class="nomiG">Nome<span class="asteriscoG"> *</span></label> <input type="text" name="nomeG" class="campiG" value="<?php if(isset($_SESSION['nomeG'])){ echo $_SESSION['nomeG'];}else{ echo "";} ?>" onkeyup="contaNomeG(); nomeCampoG()" onblur="nomeCampoG(); this.value=this.value.replace(/[\s]*/,'')"> <!-- E' il Trim di js (onblur rimuove subito in modo visibile spazi prima e alla fine) --> <div class="NG"> <div id="contaNomeG"></div><div id="nomeCampoG"></div> </div> <label class="nomiG">Cognome<span class="asteriscoG"> *</span></label> <input type="text" name="cognome" class="campiG" value="<?php if(isset($_SESSION['cognome'])){ echo $_SESSION['cognome'];}else{ echo "";} ?>" onkeyup="contaCognomeG(); cognomeCampoG()" onblur="cognomeCampoG(); this.value=this.value.replace(/[\s]*/,'')"> <div class="NG"> <div id="contaCognomeG"></div><div id="cognomeCampoG"></div> </div> <label class="nomiG">Via, Piazza<span class="asteriscoG"> *</span></label> <input type="text" name="via" class="campiG" value="<?php if(isset($_SESSION['via'])){ echo $_SESSION['via'];}else{ echo "";} ?>" onkeyup="contaViaG(); viaCampoG()" onblur="viaCampoG(); this.value=this.value.replace(/[\s]*/,'')"> <label class="nomiGn">n°<span class="asteriscoG"> *</span></label> <input type="text" name="n" class="campiGn" value="<?php if(isset($_SESSION['n'])){ echo $_SESSION['n'];}else{ echo "";} ?>" onkeyup="contaNG(); nCampoG()" onblur="nCampoG(); this.value=this.value.replace(/[\s]*/,'')"> <div class="NG"> <div id="contaViaG"></div><div id="viaCampoG"></div> <div id="contaNG"></div><div id="nCampoG"></div> </div> <label class="nomiG">Località<span class="asteriscoG"> *</span></label> <input type="text" name="loc" class="campiG" value="<?php if(isset($_SESSION['loc'])){ echo $_SESSION['loc'];}else{ echo "";} ?>" onkeyup="contaLocG(); locCampoG()" onblur="locCampoG(); this.value=this.value.replace(/[\s]*/,'')"> <label class="nomiGp">Provincia (sigla)<span class="asteriscoG"> *</span></label> <input type="text" name="pro" class="campiGp" value="<?php if(isset($_SESSION['pro'])){ echo $_SESSION['pro'];}else{ echo "";} ?>" onkeyup="contaProG(); proCampoG()" onblur="proCampoG(); this.value=this.value.replace(/[\s]*/,'')"> <div class="NG"> <div id="contaLocG"></div><div id="locCampoG"></div> <div id="contaProG"></div><div id="proCampoG"></div> </div> <label class="nomiG">CAP<span class="asteriscoG"> *</span></label> <input type="text" name="cap" class="campiGc" value="<?php if(isset($_SESSION['cap'])){ echo $_SESSION['cap'];}else{ echo "";} ?>" onkeyup="contaCapG(); capCampoG()" onblur="capCampoG(); this.value=this.value.replace(/[\s]*/,'')"> <label class="nomiGs">Nazione (se estera)</label> <input type="text" name="naz" class="campiGs" value="<?php if(isset($_SESSION['naz'])){ echo $_SESSION['naz'];}else{ echo "";} ?>" onkeyup="contaNazG();" onblur="this.value=this.value.replace(/[\s]*/,'')"> <div class="NG"> <div id="contaCapG"></div><div id="capCampoG"></div> <div id="contaNazG"></div> </div> <label class="nomiG">Email<span class="asteriscoG"> *</span></label> <input type="text" name="email" class="campiG" value="<?php if(isset($_SESSION['email'])){ echo $_SESSION['email'];}else{ echo "";} ?>" onkeyup="contaUserG(this); contaEmailG(); validaEmailG(); emailCampoG()" onblur="emailCampoG() && validaEmailG(); this.value=ignoreSpaces(this.value)"> <!-- Rimuove tutti gli spazi (attacca le parole) --> <label class="nomiGt">Telefono<span class="asteriscoG"> *</span></label> <input type="text" name="tel" class="campiGt" value="<?php if(isset($_SESSION['tel'])){ echo $_SESSION['tel'];}else{ echo "";} ?>" onkeyup="contaTelG(); telCampoG();" onblur="telCampoG(); this.value=this.value.replace(/[\s]*/,'')"> <div class="NG"> <div id="contaUserG"></div><div id="contaEmailG"></div><div id="validaEmailG"></div><div id="emailCampoG"></div> <div id="contaTelG"></div><div id="telCampoG"></div> </div>
<br>
<div id="contSX">
<span class="testoMess">Note</span>
<br>
<br>
</div><!-- contSX --><div id="footer-bassoG">
<div id="contaMessG"></div>
<textarea name="messaggioG" id="txtScrivimiG" onkeyup="contaG(this);" onblur="this.value=this.value.replace(/[\s]*/,'')"><?php if(isset($_SESSION['messaggioG'])){ echo $_SESSION['messaggioG'];}else{ echo "";} ?></textarea>
</div> <!--footer-bassoG --><div id="footerSX">
<span class="campiObbG">Campi obbligatori</span><span class="asterisco"> *</span>
</div><!--footerSX--><div id="footerCT"> <button type="submit" name="inviaG" value="inviaG" style="cursor:pointer;">Invia</button> </div><!--footerCT--> <div id="footerDX"> <div style=" font-family: arial; font-size: 13px; color:; text-shadow: 0px 1px 0px #ffffff; margin-right: 80px; margin-bottom: 2px;">Scrivi questo codice</div> <input type="text" name="validatorG" class="validatorG" onkeyup="contaValidG(); validatoreCampoG()" onblur="validatoreCampoG(); this.value=ignoreSpaces(this.value)"> <div style="text-align: right; margin-right: 42px;"><img style="width: 70px; height: 30px;" id="capG" src="Captcha/captcha-image.php" alt="CAPTCHA image" title="CAPTCHA image">
<img style="width: 24px; height: 24px; margin-bottom: 1px; cursor:pointer;;" id="immagineG" src="immagini/refresh.gif" alt="Refresh CAPTCHA image" title="Refresh CAPTCHA image" onclick="funzioneG()">
</div><!--style-->
</div><!--footerDX--><div id="contaValidG"></div><div id="validatoreCampoG"></div> </fieldset> <!-- contenuto--> </form>
<!-- FINE FORM-->
<p style="font-size:14px; color:#004080; text-align:center; margin-top:7px;"><span style="font-weight: bolder;">Nota:</span> Queste informazioni non verranno cedute a terzi
<br>
e verranno usate solo per la spedizione.</p>
</div><!-- containerBig --><div class="carrello">
<div style="width: auto; height: auto; font-size: 2em; color: #008000; text-align: center;">Il tuo Carrello</div>
<br>
<br>
<br></div>
- RISPOSTA AUTOMATICA -</p>
-
@Apthu, ho fatto un test semplicemente sostituendo gli indirizzi del destinatario e del mittente del post #1 e ricevo correttamente l'e-mail.
L'altro codice del post #17 non ho potuto fare tutti i testaggi esaustivi, ma dando un'occhiata veloce non mi pare avere visto problemi evidenti.
-
E' il codice del post #17 che non a funziona, ho provato anche a spostarlo, non so. Quando hai fatto il test fammi sapere, io non mi intendo molto.