Visualizzazione risultati 1 fino 9 di 9

Discussione: Form mail con ASP

  1. #1
    zyro non è connesso Utente
    Data registrazione
    08-05-2010
    Messaggi
    105

    Predefinito Form mail con ASP

    Ciao a tutti e vi chiedo anticipatamente scusa se ho sbagliato sezione, ma spero che sia quella più giusta.

    Volevo chiedervi un urgente favore, sperando che ci sia qualcuno che mi possa aiutare.

    Ho creatoun sito e dopodomani deve essere già attivo, in questo sito ho inserito una pagina con un form html per potermi inviare una mail con dei dati precisi. Questo form si collega a una pagina ASP che dovrebbe di regola prendere i vari dati e lavorarli lato server per inviarmeli direttamente quando i visitatori cliccano sul tasto invio della mia pagina... il tutto per eliminare il problema del fastidioso outlook.

    Ora qui sorge il problema, quando cliccano il tasto d'invio per inviare la mail, il form sì si collega al file ASP ma lo fa letteralmente, nel senso che apre la pagina ASP e fa visualizzare tutto il codice al visitatore e oltretutto non invia la mail.

    Qualcuno mi può consigliare?

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    Il fatto che il tuo form invia i dati alla pagina, dopo aver cliccato sul pulsante "submit", ha come conseguenza proprio anche il "redirect" sulla pagina ASP.

    Una soluzione a questo problema, (se non puoi modificare la pagina ASP), può essere quella di fare una richiesta tramite ajax.

    Ciao!
    Ultima modifica di alemoppo : 17-09-2011 alle ore 00.19.35

  3. #3
    zyro non è connesso Utente
    Data registrazione
    08-05-2010
    Messaggi
    105

    Predefinito

    Ciao Alemoppo, innanzitutto ti ringrazio di aver risposto così velocemente.
    Ti preciso subito che purtroppo iio non capisco molto né di linguaggio ASP né di AJAX, avendo sempre lavorato con un editor visuale come dreamweaver anche i miei contatti con l'html sono ridotti alle piccole correzioni e agli script inseriti in più, perciç non saprei come fare questo richiamo con AJAX.
    Oltretutto mi sembra strano che la pagina ASP non funzioni visto che l'ho presa da un sito dove sicuramente l'hanno controllata e testata prima di inserirla (addirittura ho cambiato il mio form ocn il loro per non avere problemi e non impelagarmi col codice che avrei potuto danneggiare).

    Mi potresti dire come fare per il redirect di AJAX?
    Ah, un'altra domanda che mi sorge spontanea (se sbaglio sappi che non la conosco questa cosa e vado a intuito). Per caso per usare questa funzione con la pagina ASP c'è bisogno di un database come in PHP? No perché non credo di averlo a disposizione qui su altervista

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    Stop.

    Su altervista non può essere eseguito codice ASP, ma soltanto PHP. (io pensavo usavi un servizio esterno, boh ).

    Puoi fare il tutto tramite php, usando soltanto la funzione mail(). Il database serve soltanto per contenere dati. Nell'invio di una email non serve.

    Con PHP, puoi fare una cosa del genere:

    Codice PHP:
    <?php
    if(isset($_POST['testo'],$_POST['destinatario'], $_POST['oggetto']))
    if(
    mail($_POST['destinatario'],$_POST['oggetto'], $_POST['testo'], 'From: tuaemail@tuodominio.com\r\n'))
    header('Location: http://google.com'); //redirect dopo aver inviato l'email in caso di successo
    else
    header('Location: http://facebook.com'); //redirect dopo aver inviato l'email in caso di errore
    else
    header('Location: http://altervista.org'); //redirect se non si arriva alla pagina tramite il form
    ?>
    Ovviamente devi adattarlo alle tue esigenze (ad esempio, rendere compatibili i valori in ingresso con il tuo form).


    -----

    Ho creatoun sito e dopodomani deve essere già attivo
    Non so se lo fai per lavoro (spero di no), per hobby o quant'altro, ma almeno, dovresti sapere cosa stai facendo...


    Ciao!
    Ultima modifica di alemoppo : 17-09-2011 alle ore 00.52.03

  5. #5
    zyro non è connesso Utente
    Data registrazione
    08-05-2010
    Messaggi
    105

    Predefinito

    Lo faccio per hobby naturalmente (o per meglio dire per me), se fosse stato per lavoro mi sarei dato una mazza in testa da solo a non sapere certe cose.
    Grazie per la dritta del PHP, non sapevo che ASP non funzionasse qui su altervista. Lo provo e ti faccio sapere. Grazie ancora

    EDIT:

    Ok ho risolto il problema, ti ringrazio per il ocnsiglio del PHP.
    Per essere completi e onesti col codice che mi hai linkato non riuscivo ancora a inviare la mail, ma ne ho trovato un altro e smanettando un pochino l'ho adattato alle mie esigenze, vuoi che lo posto così se capita qualcuno su questa discussione che ha avuto il mio stesso problema trova la soluzione?
    Perché adesso funziona benissimo
    Ultima modifica di alemoppo : 17-09-2011 alle ore 02.35.50 Motivo: Non fare messaggi consecutivi: usa il tasto "Edita"

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    Come vuoi... Forse può essere utile, ma dovrebbe funzionare anche il mio, adattandolo...

    Ciao!

  7. #7
    zyro non è connesso Utente
    Data registrazione
    08-05-2010
    Messaggi
    105

    Predefinito

    Sì col tuo ho ovviato al problema di outlook, ma mi rimandava sempre al terzo link senza spedirmi la mail di prova, co nquesto invece ho risolto ogni problema, ma devo comunque ringraziarti per avermi fatto notare questa cosa.

    Allora eccoci a noi. Siccome sono sicuro che molti avranno avuto il mio stesso problema e so cosa vuol dire cercare una soluzione fino quasi a impazzire posto qui sotto il codice utile a risolvere questo problema:

    Questa parte del codice va inserita tra i tag <BODY> </BODY> della pagina dove volete appaia il form per l'invio della mail, precisamente nel punto in cui volete che appaia il form:

    Codice:
    <table width="522" border="1" align="center" bordercolor="#FFFFFF">
                        <tr>
                          <td width="512" bordercolor="#2B95FF"><table width="100%" border="0" align="center" cellpadding="0" cellspacing="10" bgcolor="#B7DBFF">
                            <form method="post" action="formInvio.php">
                              <input type="hidden" name="require" value="email,nome">
                              <input type="hidden" name="contenitore" value="tuamail@tuamail.com">
                              <input type="hidden" name="invia_Dati" value="REMOTE_HOST,HTTP_USER_AGENT">
                              <tr>
                                <td width="37%" align="center" valign="middle" class="modulomultiplo"> <div align="right">Nome e Cognome (*) </div></td>
                                <td width="63%"><input type="text" name="nome" size="30" class="sfmoduli"></td>
                              </tr>
                              <tr>
                                <td align="center" valign="middle" class="modulomultiplo"> <div align="right">Nickname</div></td>
                                <td><input type="text" name="nickname" size="30" class="sfmoduli"></td>
                              </tr>
                              <tr>
                                <td align="center" valign="top" class="modulomultiplo"> <div align="right">Email<br> a cui si vuole risposta (*) </div></td>
                                <td><input type="text" name="email" size="30" class="sfmoduli"></td>
                              </tr>
                              <tr>
                                <td align="center" valign="middle" class="modulomultiplo"> <div align="right">Telefono</div></td>
                                <td><input type="text" name="telefono" size="30" class="sfmoduli"></td>
                              </tr>
                              <tr>
                                <td align="center" valign="top" class="modulomultiplo"> <div align="right">Messaggio</div></td>
                                <td><textarea name="messaggio" cols="31" rows="7" class="sfmoduli"></textarea></td>
                              </tr>
                              <tr>
                                <td align="center" valign="baseline" class="modulomultiplo"> <div align="right">Opzionale</div></td>
                                <td><input type="text" name="opzionale" size="30" class="sfmoduli"></td>
                              </tr>
                              <tr>
                                <td align="center" valign="top" class="modulomultiplo"> <div align="right">Opzionale2</div></td>
                                <td><textarea name="opzionale2" cols="31" rows="7" class="sfmoduli">funziona?</textarea></td>
                              </tr>
                              <tr>
                                <td align="center" valign="baseline" class="modulomultiplo"> <div align="right">Opzione3</div></td>
                                <td><input type="checkbox" name="contatto" value="si" checked>
                                  <span class="modulomultiplo">desidero essere ricontattato </span></td>
                              </tr>
                              <tr>
                                <td align="center" valign="baseline" class="modulomultiplo"> <div align="right">Opzione4</div></td>
                                <td><select name="listaDiscesa" size="1" class="sfmoduli">
                                    <option>scelta1</option>
                                    <option>scelta2</option>
                                    <option>scelta3</option>
                                    <option selected>seleziona</option>
                                  </select></td>
                              </tr>
                              <tr>
                                <td colspan="2" align="center" valign="baseline"><div align="left" class="style1">* campi obbligatori </div></td>
                              </tr>
                              <tr>
                                <td colspan="2" align="center"><input name="submit" type="submit" class="modulomultiplo">
                                  &nbsp;&nbsp;
                                  <input name="reset" type="reset" class="modulomultiplo"></td>
                              </tr>
                            </form>
                          </table></td>
                        </tr>
                      </table>
    Nella parte in rosso va inserita la mail di destinazione, quindi la vostra se siete voi a voler ricevere una mail da chi compila il form
    Nella parte in blu invece trovate quei campi che in questo form sono considerati obbligatori, cioé che se provate a inviare la mail senza averli compilati vi manda una pagina di errore in cui vi dice di compilarli. Per aggiungere altri campi basterà semplicemente aggiungere il nome degli altri campi all'interno della stessa parentesi separati da una virgola.
    Questo form è completo di molte opzioni, io personalmente ho eliminato i campi telefono e alcune opzioni aggiuntive di sotto e la mail arriva correttamente lo stesso, quindi potete personalizzarlo ampliamente.

    continua nel post sotto...

  8. #8
    zyro non è connesso Utente
    Data registrazione
    08-05-2010
    Messaggi
    105

    Predefinito

    Di seguito ecco invece il codice da scrivere in un foglio esterno di PHP, copiatelo interamente e sostituitelo con tutto ciò che si trova all'interno di quel foglio, poi salvate il foglio col nome "formInvio.php" e inseritelo nella stessa cartella dove si trova la pagina con il form per l'invio della mail.
    Ecco il codice:
    Codice:
    <?
    /*
    formail completo, è possibile aggiungere qualunque campo
    è sufficiente inserire le due pagine in un punto qualunque
    del proprio dominio.
    by linkbruttocane
    */
    
    $delay = "5";
    
    $url = "http://www.paginareindirizzamento.com";
    
    $provenienza = array ('masterbass.com','www.masterbasss.com','216.64.145.194');
    
    $esclusioni = array ('*@quellochetipare.com', 'nomechetipare@dominio.com', 'altro@dominio.com');
    
    $email = $_POST['email'];
    
    $versione_form = "stabile";
    
    function print_error($reason,$type = 0) {
       global $versione_form;
       build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet);
          if ($type == "missing") {
          ?>
          <body bgcolor='#94B6C6'>
          <p align='center'><font face='Arial' color='#990000' size='2'>Il modulo non è
    stato inviato per le seguenti ragioni</font></p><br>
    <p align='center'><font face='Arial' size='2' color='#990000'>
         <?
         echo $reason."\n";
         ?>
         </font>
         <p align='center'><font face='Arial' size='2' color='#990000'>Premere indietro
    nel browser e riprovare.</font></p><?
       } else { // every other error
          ?>
          Il modulo non è stato inviato per le seguenti ragioni:<p align='center'>
          <?
       }
       echo "<br><br>\n";
      
       exit;
    }
    
    
    function check_banlist($esclusioni, $email) {
       if (count($esclusioni)) {
          $allow = true;
          foreach($esclusioni as $banned) {
             $temp = explode("@", $banned);
             if ($temp[0] == "*") {
                $temp2 = explode("@", $email);
                if (trim(strtolower($temp2[1])) == trim(strtolower($temp[1])))
                   $allow = false;
             } else {
                if (trim(strtolower($email)) == trim(strtolower($banned)))
                   $allow = false;
             }
          }
       }
       if (!$allow) {
          print_error("Stai usando un <b>indirizzo email escluso.</b>");
       }
    }
    
    
    function check_referer($provenienza) {
       if (count($provenienza)) {
          $found = false;
          $temp = explode("/",getenv("HTTP_REFERER"));
          $referer = $temp[2];
          for ($x=0; $x < count($provenienza); $x++) {
             if (eregi ($provenienza[$x], $referer)) {
                $found = true;
             }
          }
          if (!getenv("HTTP_REFERER"))
             $found = false;
          if (!$found){
             print_error("Provieni da un <b>dominio non autorizzato.</b>");
             error_log("[FormMail.php] Illegal Referer. (".getenv("HTTP_REFERER").")", 0);
          }
             return $found;
          } else {
             return true; // 
       }
    }
    if ($provenienza)
       check_referer($provenienza);
    
    if ($esclusioni)
       check_banlist($esclusioni, $email);
    
    
    function parse_form($array) {
       // build reserved keyword array
       $reserved_keys[] = "required";
       $reserved_keys[] = "redirect";
       $reserved_keys[] = "email";
       $reserved_keys[] = "require";
       $reserved_keys[] = "contenitore";
       $reserved_keys[] = "titolo";
       $reserved_keys[] = "bgcolor";
       $reserved_keys[] = "text_color";
       $reserved_keys[] = "link_color";
       $reserved_keys[] = "vlink_color";
       $reserved_keys[] = "alink_color";
       $reserved_keys[] = "title";
       $reserved_keys[] = "missing_fields_redirect";
       $reserved_keys[] = "invia_Dati";
       if (count($array)) {
          while (list($key, $val) = each($array)) {
           
             $reserved_violation = 0;
             for ($ri=0; $ri<count($reserved_keys); $ri++) {
                if ($key == $reserved_keys[$ri]) {
                   $reserved_violation = 1;
                }
             }
          
             if ($reserved_violation != 1) {
                if (is_array($val)) {
                   for ($z=0;$z<count($val);$z++) {
                      $content .= "$key: $val[$z]\n";
                   }
                } else {
                   $content .= "$key: $val\n";
                }
             }
          }
       }
       return $content;
    }
    
    
    function mail_it($content, $titolo, $email, $contenitore) {
            mail($contenitore, $titolo, $content, "From: $email\r\nReply-To: $email\r\nX-Mailer: DT_formmail");
    }
    
    
    function build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet) {
       if ($style_sheet)
          echo "<LINK rel=STYLESHEET href=\"$style_sheet\" Type=\"text/css\">\n";
       if ($title)
          echo "<title>$title</title>\n";
       if (!$bgcolor)
          $bgcolor = "#94B6C6";
       if (!$text_color)
          $text_color = "#80000";
       if (!$link_color)
          $link_color = "#0000FF";
       if (!$vlink_color)
          $vlink_color = "#FF0000";
       if (!$alink_color)
          $alink_color = "#000088";
       if ($background)
          $background = "background=\"$background\"";
       echo "<body bgcolor=\"$bgcolor\" text=\"$text_color\" link=\"$link_color\" vlink=\"$vlink_color\" alink=\"$alink_color\" $background>\n\n";
    }
    
    $contenitore_finale = split(',',$contenitore);
    for ($i=0;$i<count($contenitore_finale);$i++) {
       $contenitore_to_test = trim($contenitore_finale[$i]);
       if (!eregi("^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,3}$", $contenitore_to_test)) {
          print_error("<b>Occorre un indirizzo email valido per continuare ($contenitore_to_test) </b>");
       }
    }
    
    
    if ($required)
       $require = $required;
    
    if ($require) {
      
       $require = ereg_replace( " +", "", $require);
       $required = split(",",$require);
       for ($i=0;$i<count($required);$i++) {
          $string = trim($required[$i]);
       
          if((!(${$string})) || (!(${$string}))) {
           
             if ($missing_fields_redirect) {
                header ("Location: $missing_fields_redirect");
                exit;
             }
             $require;
             $missing_field_list .= "<b>Non trovato: $required[$i]</b><br>\n";
          }
       }
       
       if ($missing_field_list)
          print_error($missing_field_list,"missing");
    }
    
    
    if (($email) || ($EMAIL)) {
       $email = trim($email);
       if ($EMAIL)
          $email = trim($EMAIL);
       if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $email)) {
          print_error("il suo <b>indirizzo email</b> non è valido");
       }
       $EMAIL = $email;
    }
    
    
    
    
    
    
    $content = parse_form($HTTP_POST_VARS);
    
    
    
    
    if ($invia_Dati) {
       $invia_Dati = ereg_replace( " +", "", $invia_Dati);
       $splitta_Dati = split(",",$invia_Dati);
       $content .= "\n------ variabili utente ------\n";
       for ($i=0;$i<count($splitta_Dati);$i++) {
          $string = trim($splitta_Dati[$i]);
          if ($splitta_Dati[$i] == "REMOTE_HOST")
             $content .= "REMOTE HOST: ".$REMOTE_HOST."\n";
          else if ($splitta_Dati[$i] == "REMOTE_USER")
             $content .= "REMOTE USER: ". $REMOTE_USER."\n";
          else if ($splitta_Dati[$i] == "REMOTE_ADDR")
             $content .= "REMOTE ADDR: ". $REMOTE_ADDR."\n";
          else if ($splitta_Dati[$i] == "HTTP_USER_AGENT")
             $content .= "BROWSER: ". $HTTP_USER_AGENT."\n";
       }
    }
    
    
    if (!$titolo)
       $titolo = "Modulo dal sito";
    
    mail_it(stripslashes($content), stripslashes($titolo), $email, $contenitore);
    
    
    if ($redirect) {
       header ("Location: $redirect");
       exit;
    } else {
       print "<body bgcolor='#94B6C6'>
    
    <p align='center'><font face='Arial' size='2' color='#800000'>Grazie per averci
    contattato.</font></p><p align='center'><font face='Arial' size='2' color='#800000'>Riceverete
    risposta all'indirizzo da voi indicato $email<br><br>...Ritorno automatico alla Home page in corso....</font></p><meta http-equiv='refresh' content='$delay; url=$url'>
    
    <p align='center'>&nbsp;</p>
    
    </body>
    ";
       echo "<br><br>\n";
       
       exit;
    }
    
    // <----------   fine    ----------> //  
    ?>
    Ecco alcune accortezze da apportare a questo file (le uniche parti da poter modificare sono quelle in rosso):

    La linea di script dove appare la dicitura $delay contiene un un valore numerico che corrispnde al tempo in secondi che ci impiegherà la pagina a reindirizzare l'utente verso un'altra pagina a fine invio mail (in questo caso 5 secondi che secondo me sono ottimi perché permettono all'utente di leggere il messaggio di buona riuscita dell'invio della mail);

    La linea di script dove compare $url contiene in parentesi l'indirizzo completo della pagina dove verrà reindirizzato l'utente, quindi sostiturla con quella desiderata;

    La linea di script con $provenienza contiene l'elenco dei provider da cui si può ricevere una mail. Sinceramente io ho trovato questa stringa molto fastidiosa perché voglio riceve mail da chiunque, quindi ho cancellato l'intera linea di codice e funziona benissimo, ricevo mail da tutti.
    Se voi volete ricevere mail soltanto da alcuni provider o domini basterà che li inseriate all'interno di quella parentesi separati da una virgola e all'interno degli apici.
    Se invece siete come me e volete ricevere mail da chiunque vi basterà eliminare l'intera riga di codice.

    La linea contenente il parametro $esclusioni infine vi permetterà di NON consentire l'invio di messaggi da parte di determinate mail, basterà inserirle all'interno della parentesi separate dalla virgola e all'interno degli appositi apici come nell'esempio sopra.
    Ultima modifica di zyro : 17-09-2011 alle ore 10.15.51

  9. #9
    zyro non è connesso Utente
    Data registrazione
    08-05-2010
    Messaggi
    105

    Predefinito

    Spero di essere stato utile ed esauriente per chiunque abbia avuto il mio stesso problema e grazie ad Alemoppo per avermi assistito.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •