Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    64

    Form e invio mail con link

    Buongiorno a tutti,


    avrei un problemino, o meglio, una questione da porvi.


    Quello che vorrei creare è un form (da compilare con nome e indirizzo email), che una volta compilato, invii una mail a me per la raccolta dei dati inseriti (anche se i dati non vengono raccolti in un database non è un problema) E una mail all'indirizzo email inserito dall'utente, con il link per lo scaricamento di un file presente sul nostro sito. Una volta cliccato il link nella mail, il download vorrei che partisse immediatamente (senza dover tornare sul sito, ma direttamente stando sulla mail).


    Prima di tutto: è possibile fare una cosa del genere? Quali sono le problematiche? Mi rendo conto che forse non è proprio una cosa da cinque minuti, ma mi chiedevo se potevate darmi qualche aiuto in proposito.


    Di codice, ahimé, ci capisco poco, ma qualche tempo fa ho dovuto fare delle modifiche grafiche (il mio settore) su un sito in php fatto da un'altra persona e ho recuperato da lì il codice del form (adattandolo alla grafica del sito in cui mi serve adesso) e del file php per l'invio della mail a me con i dati inseriti dall'utente.


    Questo vorrebbe essere il codice per il form in una pagina index.html, da compilare con nome e email:


    codice:
    <div class="container inner">
                   <h1 class="download">download</h1>
                    <p align="center"><i>Fill the form and download.</i></p>
                    
                    <form class="form-inline" action="newsletterup.php" method="post" id="mailform" name="mailform" align="center">
                    <p>
                    <div class="form-group">
                    Complete Name <br/>
                    <input type="text" size="32" id="nome" name="nome" placeholder="Your Name" class="form-control" class="sr-only"/>
                    </div>
                    <div class="form-group">
                    E-mail <br/>
                    <input type="text" size="32" id="mail" name="mail" placeholder="Your Email" class="form-control"/>     
                    </div>
                    </p>
                    <input type="image" src="img/download.png" alt="Submit Form" />
                </form>

    Questo invece dovrebbe essere il codice di 'newsletterup.php' per l'invio della mail a me con nome e email:


    codice:
    <?php
    
    
    $nomeaf = $_POST['nome'];
    $email  = $_POST['mail'];
    $to = "mia email";
    if((!empty($nomeaf))&&(!empty($email))){
        //echo($q_prfetch[0]);
        error_reporting(E_ALL);
        
        // Genera un boundary
        $mail_boundary = "=_NextPart_" . md5(uniqid(time()));
         
        $subject = 'Download';
        $sender = $email;
        
         
        $headers = "From: $sender\n";
        $headers .= "MIME-Version: 1.0\n";
        $headers .= "Content-Type: multipart/alternative;\n\tboundary=\"$mail_boundary\"\n";
        $headers .= "X-Mailer: PHP " . phpversion();
         
        $infos = "Nome: ".$nomeaf."<br>E-mail: ".$mail."<br>";
        // Corpi del messaggio nei due formati testo e HTML
        $text_msg = "messaggio in formato testo";
        $html_msg = "<b>messaggio</b> in formato html<br>";
         
        // Costruisci il corpo del messaggio da inviare
        $msg = "This is a multi-part message in MIME format.\n\n";
        $msg .= "--$mail_boundary\n";
        $msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
        $msg .= "Content-Transfer-Encoding: 8bit\n\n";
        $msg .= $infos;
        //$msg .= "Questa è una e-Mail di test inviata dal servizio Hosting di *** per la verifica del corretto funzionamento di PHP mail()function .
        
        //****.it";  // aggiungi il messaggio in formato text
         
        $msg .= "\n--$mail_boundary\n";
        $msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
        $msg .= "Content-Transfer-Encoding: 8bit\n\n";
        $msg .= "<html><head><title>Messaggio inviato da".$nomeaf."</title></head><body>".$infos."</body></html>";
        //$msg .= "Questa è una e-Mail di test inviata dal servizio Hosting *** per la verifica del corretto funzionamento di PHP mail()function .
        
        //***.it";  // aggiungi il messaggio in formato HTML
         
        // Boundary di terminazione multipart/alternative
        $msg .= "\n--$mail_boundary--\n";
         
        // Imposta il Return-Path (funziona solo su hosting Windows)
        ini_set("sendmail_from", $sender);
         
        // Invia il messaggio, il quinto parametro "-f$sender" imposta il Return-Path su hosting Linux
        if (mail($to, $subject, $msg, $headers, "-f$sender")) { 
            echo "Mail inviata correttamente !";
            ?>
            <script language="javascript">
               alert("Mail inviata.");
               location.href = "url";
            </script>
            <?php
        } else { 
            echo "<br><br>Recapito e-Mail fallito!";
            ?>
            <script language="javascript">
               alert("Mail non inviata. Provi di nuovo o contatta il nostro staff per segnalare il problema.");
               location.href = "url";
            </script>
            <?php
        }
    }else{
        ?>
        <script language="javascript">
             alert("Mail non inviata. Inserisci tutti i dati correttamente.");
           location.href = "url";
        </script>
        <?php
    }
    ?>
    C'è qualche strafalcione fino ad adesso? Il proprietario del sito non si è mai lamentato in proposito, quindi, visto che è usato per l'iscrizione alla newsletter, immagino che funzioni. La cosa che mi impensierisce di questa parte è che il mio e il sito da dove ho preso il codice non sono con lo stesso hosting. Visto che l'hosting è citato nel codice di 'newsletterup.php' c'è il pericolo che non funzioni su un altro hosting? (scusate, forse questa è una domanda scema, ma giusto per levarsi ogni dubbio...)


    Se tutto questo dovesse andare bene, mi mancherebbe "solo":
    1 - come inviare la email all'utente che ha appena inserito i dati
    2 - come creare il link nella mail inviata all'utente, che cliccato fa partire il download in automatico.

    Sapreste darmi qualche indicazione?


    Grazie in anticipo
    L

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    64
    Oggi ho provato a lavorarci un po' su. Ho preso come riferimento il file php dell'invio della mail con i dati raccolti dal form e ho cercato di trasformarlo nel codice per l'invio della mail all'utente che compila il form, quella con il link per il download.
    Questo è quello che è venuto fuori:

    codice:
    <?php
    
    $nomeaf = $_POST['nome'];
    $email  = $_POST['mail'];
    $to = $_POST['mail'];
    if((!empty($nomeaf))&&(!empty($email))){
    	//echo($q_prfetch[0]);
    	error_reporting(E_ALL);
    	
    	// Genera un boundary
    	$mail_boundary = "=_NextPart_" . md5(uniqid(time()));
    	 
    	$subject = 'Soggetto della mail';
    	$sender = "mio indirizzo mail";
    	
    	 
    	$headers = "From: $sender\n";
    	$headers .= "MIME-Version: 1.0\n";
    	$headers .= "Content-Type: multipart/alternative;\n\tboundary=\"$mail_boundary\"\n";
    	$headers .= "X-Mailer: PHP " . phpversion();
    	 
    	$infos = "<p>Gentile ".$nomeaf.",</p>";
    	// Corpi del messaggio nei due formati testo e HTML
    	$text_msg = "messaggio in formato testo";
    	$html_msg = "<b>messaggio</b> in formato html<br>";
    	 
    	// Costruisci il corpo del messaggio da inviare
    	$msg = "This is a multi-part message in MIME format.\n\n";
    	$msg .= "--$mail_boundary\n";
    	$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    	$msg .= "Content-Transfer-Encoding: 8bit\n\n";
    	$msg .= $infos;
    		 
    	$msg .= "\n--$mail_boundary\n";
    	$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
    	$msg .= "Content-Transfer-Encoding: 8bit\n\n";
    	$msg .= "<html>
    <head>
    <title>Messaggio inviato da MIO NOME </title>
    </head>
    <body>".$infos."
    <h1>Titolo mail</h1>
    	<p>Grazie per esserti iscritto alla newsletter!</p>
    	 <p>Clicca sul link qui sotto per scaricare la colonna sonora del documentario.</p>
    <a href="url file da scaricare"><img src=" url immagine " /></a></body></html>";
    		
    
    
    	// Boundary di terminazione multipart/alternative
    	$msg .= "\n--$mail_boundary--\n";
    	 
    	// Imposta il Return-Path (funziona solo su hosting Windows)
    	ini_set("sendmail_from", $sender);
    	 
    	// Invia il messaggio, il quinto parametro "-f$sender" imposta il Return-Path su hosting Linux
    	if (mail($to, $subject, $msg, $headers, "-f$sender")) { 
    		echo "Mail inviata correttamente! Controlla la tua casella di posta per scaricare il file della colonna sonora del documentario.";
    		?>
    		<script language="javascript">
    		   alert("Mail inviata.");
    		   location.href = "index.html";
    		</script>
    		<?php
    	} else { 
    		echo "<br><br>Recapito e-Mail fallito!";
    		?>
    		<script language="javascript">
    		   alert("Mail non inviata. Provi di nuovo o <a href="mailto: mio indirizzo email">contatta il nostro staff</a> per segnalare il problema.");
    		   location.href = "index.html";
    		</script>
    		<?php
    	}
    }else{
    	?>
    	<script language="javascript">
      	   alert("Mail non inviata. Inserisci tutti i dati correttamente.");
    	   location.href = "index.html";
    	</script>
    	<?php
    }
    ?>
    Ci sono un paio (solo??) di cose che non capisco:


    1) in
    codice:
    if (mail($to, $subject, $msg, $headers, "-f$sender")) { 
    		echo "Mail inviata correttamente! Controlla la tua casella di posta per scaricare il file della colonna sonora del documentario."
    Questo sarebbe la costruzione della "landing page" dopo la compilazione del form, giusto?


    2) in
    codice:
    $text_msg = "messaggio in formato testo";
    	$html_msg = "<b>messaggio</b> in formato html<br>";
    È qui che va il corpo della email in formato testo e in formato html o dopo, dove l'ho messo io?


    Se tutto questo e il precedente dovesse essere corretto, i due blocchi di codice (invio mail a me con dati E invio mail all'utente con link per download) si possono mettere nello stesso file 'newsletterup.php'?

    Grazie mille a chiunque possa darmi qualche dritta!

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    64
    Dunque oggi ho fatto con un test con i due codici (quello per l'invio dei dati a me e quello dell'invio del link a chi compila il fom).
    ho creato due pagine html, ciascuna richiando un file php con ciascun codice. Con qualche correzione qua e là sembra che i codici funzionino. Le mail arrivano bene.
    Ora ancora un paio di quesiti.

    Nella parte della costruzione della mail in formato HTML da inviare all'utente con il link per il download, come si fa a fargli vedere le immagini?
    Credo di aver capito che la riga che controlla questa cosa sia questa:
    codice:
    $headers .= "Content-Type: multipart/alternative;\n\tboundary=\"$mail_boundary\"\n";
    o forse questa:
    codice:
    $msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
    però non ho capito come fargli capire che ci sono anche delle immagini nella mail e di conseguenza fargliele visualizzare.

    Qualcuno potrebbe dare un dritta? Credo che per voi sia un gioco da ragazzi, questo...

    Poi dovrei capire anche come unire i due blocchi di codice per l'invio delle due email in un unico file php. Stasera provo a fare qualche prova e vediamo cosa succede.

    Grazie mille a chiunque possa dare una mano.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    64
    Dunque...continuo con le mie domande al vento...magari qualcuno a qualche punto avrà compassione di me e mi darà una dritta...
    I due script, un po' modificati dalla versione postata qui, funzionano bene. Li ho testati: le mail vengono spedite e arrivano senza problemi.

    Mi manca solo capire come riuscire ad unire i due script in un unico file php. Ho cercato un po' in giro, ma non sono riuscita a capire molto bene.

    Potreste dirmi se è possibile e come farlo? È l'ultimo step, daje!
    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.