Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Sviluppo e Gestione siti web > Php - Mysql
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 12-09-08, 19:44   #1 (permalink)
Esperta
 
L'avatar di pikadilly
 
Data di registrazione: Dec 2006
Ubicazione: Old City
Messaggi: 6,290
Invia un messaggio tramite ICQ a pikadilly
Problema Form mail in php e libero mail

Salve a tutti, mi è capitata una cosa molto strana con una web mail e con la casella di posta di libero.

Codice PHP:
<?php
define
("_destinatario","nomeindi@libero.it);
define("
errore_oggetto_predefinito","Non hai inserito un oggetto!");
define("
errore_email_predefinito","L'indirizzo email che hai inserito non è corretto!");
define("errore_messaggio_predefinito","Il messaggio è vuoto!");
define("segnaposto_oggetto","Inserisci un oggetto");
define("segnaposto_email","Inserisci la tua email");
define("segnaposto_messaggio","Inserisci il tuo messaggio");
function generaModulo($oggetto=segnaposto_oggetto,$email=segnaposto_email,$messaggio=segnaposto_messaggio,$errore_oggetto="",$errore_email="",$errore_messaggio=""){
?>
<form action="<?php echo $_SERVER['
PHP_SELF']; ?>" method="post" id="form1">
<p>Per ricevere informazioni pu&ograve; telefonarci ai numeri:<br />
  <strong>0766/92329-0766/950048</strong><br />  
  <strong>Cell:328/9198828</strong><br />
<br />
  Altrimenti pu&ograve; inviare una mail attraverso la form sottostante. Le ricordiamo che inviando la mail dichiara di aver letto e accettato ci&ograve; che &egrave; scritto nell'
informativa per la privacyL'inserimento di un indirizzo e-mail non esistente comporter&agrave; il mancato recapito di risposte e quindi di perdita di informazioni.<br />
  <br />
</p>
<table>
<tr>
<td>Il tuo indirizzo e-mail*</td>
<td><label>
<?php if (!$errore_email=="") { echo"<span><strong>$errore_email</strong></span>";} else { echo"";}?><br />
  <input name="email" type="text" id="mail" value="<?php echo $email;?>" />
</label></td>
</tr>
<tr>
<td>Oggetto*</td>
<td><label>
<?php if (!$errore_oggetto=="") { echo"<span><strong>$errore_oggetto</strong></span>";} else { echo"";}?><br />
  <input name="oggetto" type="text" id="oggetto" value="<?php echo $oggetto;?>" />
</label></td>
</tr>
<tr>
<td>Messaggio*</td>
<td>
  
    <?php if (!$errore_messaggio=="") { echo"<span><strong>$errore_messaggio</strong></span>";} else { echo"";}?>
    <br />
      <textarea name="messaggio" cols="30" rows="5" id="messaggio" ><?php echo $messaggio;?></textarea>
  <br />
<br />

  <label>*
  <input name="informativa" type="checkbox" id="informativa" onclick="MM_popupMsg('
Selezionando questa casella dichiari di aver letto e accettato l'informativa sulla privacy.')" />
Dichiaro di aver letto l'</label><a href="
informativa_privacy.php"><strong> Informativa sulla privacy
</strong></a></td>
</tr>
<tr>
<td><label>*I campi sono obbligatori
  
</label></td>
<td><label>
 <input type="
submit" value="Invia il modulo" name="bottone_invio" /> <input type="reset" name="cancella" id="cancella" value="Ripristina" />
</label></td>

</tr>
</table>

</form>
<?php
}
function isValidEmail($email){
$pattern = "
^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$";
 
if (eregi($pattern, $email)){
  return true;
}
else {
  return false;
}   
}

function controlla($stringa,$lunghezza){
if (strlen($stringa)<$lunghezza){
  return true;
}
else {
  return false;
}   
}

?>
<?php if (!isset($_POST['bottone_invio']))  {
generaModulo();
} else  {
  $oggetto = isset($_POST['oggetto']) ? stripslashes ($_POST['oggetto']) : "";
  $email   = isset($_POST['email'])   ? stripslashes ($_POST['email']) : "";
  $messaggio = isset($_POST['messaggio']) ? stripslashes ($_POST['messaggio']) : "";
    

  $error  = false;
  $errore_oggetto = '';
  $errore_email = '';
        $errore_messaggio = '';

     if (controlla($oggetto,1) or ($oggetto==segnaposto_oggetto)) {
      $error = true;
      $errore_oggetto = errore_oggetto_predefinito;
  }
        

  if (!isValidEmail($email)){
      $error = true;
      $errore_email = errore_email_predefinito;
  }
  if ((controlla($messaggio,1)) or ($messaggio==segnaposto_messaggio)) { 
      $error = true;
      $errore_messaggio = errore_messaggio_predefinito;
  }

  if ($error){
     generaModulo($oggetto,$email,$messaggio,$errore_oggetto,$errore_email,$errore_messaggio);
  }
  else {
        ?>
        <p>
        Ha inserito i seguenti dati:<br />
        <br />
        <b>Oggetto:</b> <?php echo $oggetto ?>
        <br />
        <b>Email:</b> <?php echo $email ?>
        <br />
        <b>Messaggio:</b> <?php echo $messaggio ?>
        <br />
        </p>
      <?php 
                if ($telefono == segnaposto_telefono) $telefono="
-";
                mail(_destinatario,"
Richiesta Informazioni Sito...","Oggetto$oggettonEmail$emailnMessaggio:$messaggio","From:$email");
                echo"
<p>Grazie per aver inviato il messaggio</p>";?>
                <?php  }  }
                    
?>
Il codice che ho appena postato funziona veramente molto bene, le mail arrivano puntuali in tutte le caselle, tranne che su libero mail.

Mi chiedo: è colpa del codice o della casella? Come posso far sì che anche libero mi riceva il contenuto della mail?

E' una curiosità, potrei benissimo usare un'altra casella, ma mi piacerebbe sapere il motivo per cui non dovrebbe ricevere solo lui ciò che gli altri ricevono. Avete qualche suggerimento? Grazie.
pikadilly non in linea   Rispondi citando
Vecchio 12-09-08, 21:18   #2 (permalink)
Esperta
 
L'avatar di pikadilly
 
Data di registrazione: Dec 2006
Ubicazione: Old City
Messaggi: 6,290
Invia un messaggio tramite ICQ a pikadilly
Perdonate l'up, ma ho dimenticato un doppio apice mentre editavo l'indirizzo per postare lo script, ma nella form vera il doppio apice c'è. Scusatemi.
pikadilly non in linea   Rispondi citando
Vecchio 16-09-08, 11:53   #3 (permalink)
Non iscritto
 
Data di registrazione: Oct 2007
Messaggi: 430
ciao pikadilly

prova a utilizzare questo semplice pattern al posto di quello presente nel codice e vedi se funziona...
Codice PHP:
$pattern =".+@.+"
PS:ma hai controllato nello spam oppure prova a vedere se la funzione mail fa il suo lavoro cambiando il codice cosi':

Codice PHP:
mail(_destinatario,"Richiesta Informazioni Sito...","Oggetto: $oggettonEmail: $emailnMessaggio:$messaggio","From:$email") or die ("mi dispiace ma questa funzione non invia niente"); 
se ti da errore vai all'indietro nel codice e vedi dove e l' origine
Angelbit88 non in linea   Rispondi citando
Vecchio 24-09-08, 21:57   #4 (permalink)
Consiglio Direttivo
 
L'avatar di Samyorn
 
Data di registrazione: Dec 2007
Ubicazione: Catania
Messaggi: 5,845
Invia un messaggio tramite ICQ a Samyorn Invia un messaggio tramite Skype a Samyorn
Gironzolando forse ho trovato la risposta al quesito di libero
__________________
Qui, Quo, Qua
Si parla poco di SMF? Sentiamo l'opinione di chi lo ha provato. Ti amo...brindiAMO?
Conosci GTLab? Devi scegliere un CMS per Forum e non sai quale? Guarda quì!!
Samyorn non in linea   Rispondi citando
Vecchio 25-09-08, 09:13   #5 (permalink)
Esperta
 
L'avatar di pikadilly
 
Data di registrazione: Dec 2006
Ubicazione: Old City
Messaggi: 6,290
Invia un messaggio tramite ICQ a pikadilly
Ah, perfetto. Almeno sappiamo che non è lo script, grazie sia a te, Samyorn, che a Angelbit88.
pikadilly non in linea   Rispondi citando
Vecchio 10-11-09, 16:54   #6 (permalink)
User Newbie
 
Data di registrazione: Nov 2009
Messaggi: 2
Ragazzuoli ... scusate se m'intrometto, ma ho avuto lo stesso problema e non mi convinceva che fosse un errore del smtp del mio domino ...

dopo svariate prove ho scoperto perche' Libero non considerava le email: MANCAVA UN PARAMETRO !!!

aggiungete nella vostra intestazione dell'email che inviate il seguente codice:

<?php
$intestazione .= "X-Mailer: PHP/" . phpversion() . "\r\n";
$intestazione .= "Message-ID: <" . md5(uniqid(time().mt_rand())) . "@" . $_SERVER['SERVER_NAME'] . ">\r\n";
?>

E TUTTO FUNZIONERA' !!!!!



EUREKA !!!!!! :*
ronzolomeo non in linea   Rispondi citando
Vecchio 10-11-09, 17:49   #7 (permalink)
User Newbie
 
Data di registrazione: Nov 2009
Messaggi: 2
Ritiro tutto ... ha funzionato per 20 min ... e poi come prima !!!

*bestemmiaapiacere!*

Ultima modifica di lorenzo-74 : 10-11-09 20:35. Motivo: maiuscola.
ronzolomeo non in linea   Rispondi citando
Vecchio 10-11-09, 22:03   #8 (permalink)
User
 
L'avatar di Artechbrand
 
Data di registrazione: Oct 2009
Ubicazione: Milano - Pavia
Messaggi: 48
Per esperienza personale prima di tutto il controllo viene fatto sull'ip della macchina dove il dominio è ospitato, quindi in questo caso è il provider che deve avere tutto in regola, sopratutto un parametro chiamato rDNS,
ma quello che potete fare per garantirvi probabilità più alte di invii riusciti è utilizzare l'invio tramite SMTP autenticato, invece della comune funzione mail().
In pratica la mail inviata diventa esattamente identica ad una mail inviata da un client di posta normale, non da un web server.
Io utilizzo sempre la classe PhpMailer per questo scopo, che trovo decisamente ottima.
Artechbrand non in linea   Rispondi citando
Rispondi
Tags: , , , ,



Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 13:00.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.