+ Rispondi alla Discussione
Risultati da 1 a 8 di 8

Problema Form mail in php e libero mail

Ultimo Messaggio di Artechbrand il:
  1. #1
    Esperta L'avatar di pikadilly
    Data Registrazione
    Dec 2006
    Località
    Old City
    Messaggi
    7,256
    Segui pikadilly su Twitter Aggiungi pikadilly su Google+ Aggiungi pikadilly su Facebook

    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","[email protected]);
    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$oggetto\nEmail$email\nMessaggio:$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.

  2. #2
    Esperta L'avatar di pikadilly
    Data Registrazione
    Dec 2006
    Località
    Old City
    Messaggi
    7,256
    Segui pikadilly su Twitter Aggiungi pikadilly su Google+ Aggiungi pikadilly su Facebook
    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.

  3. #3
    Non iscritto
    Data Registrazione
    Oct 2007
    Messaggi
    432
    ciao pikadilly

    prova a utilizzare questo semplice pattern al posto di quello presente nel codice e vedi se funziona...
    Codice PHP:
    $pattern ="[email protected]+"
    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

  4. #4
    Consiglio Direttivo L'avatar di Samyorn
    Data Registrazione
    Dec 2007
    Località
    Catania
    Messaggi
    6,000
    Segui Samyorn su Twitter Aggiungi Samyorn su Google+ Aggiungi Samyorn su Facebook Aggiungi Samyorn su Linkedin
    Gironzolando forse ho trovato la risposta al quesito di libero
    MODFunzioni di PHP Qui, Quo, Qua
    Si parla poco di SMF? Sentiamo l'opinione di chi lo ha provato. Ti amo...brindiAMO?

  5. #5
    Esperta L'avatar di pikadilly
    Data Registrazione
    Dec 2006
    Località
    Old City
    Messaggi
    7,256
    Segui pikadilly su Twitter Aggiungi pikadilly su Google+ Aggiungi pikadilly su Facebook
    Ah, perfetto. Almeno sappiamo che non è lo script, grazie sia a te, Samyorn, che a Angelbit88.

  6. #6
    User Newbie
    Data 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 !!!!!! :*

  7. #7
    User Newbie
    Data 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 alle 20:35 Motivo: maiuscola.

  8. #8
    User L'avatar di Artechbrand
    Data Registrazione
    Oct 2009
    Località
    Milano - Pavia
    Messaggi
    49
    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.

+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.