Visualizzazione risultati 1 fino 3 di 3

Discussione: Modifica Form Mail con allegato

  1. #1
    magiksite non è connesso Neofita
    Data registrazione
    30-06-2008
    Messaggi
    3

    Predefinito Modifica Form Mail con allegato

    Salve a tutti, mi scuso se scrivo nella sezione sbaglita, ma è il mio primo messaggio che scrivo nel forum, ho trovato in giro per internet un form mail che invia allegati, molto semplice da fare, e il form si divide in due pagine, quella php che fa tutto il lavoro e quella html che fa riferimento al form in questione

    eccovi entrambi i codici

    formmail.php

    Codice:
    <?php
    // Recupero il valore dei campi del form
    $destinatario = $_POST['destinatario'];
    $mittente = $_POST['mittente'];
    $oggetto = $_POST['oggetto'];
    $messaggio = $_POST['messaggio'];
    
    // Valorizzo le variabili relative all'allegato
    $allegato = $_FILES['allegato']['tmp_name'];
    $allegato_type = $_FILES['allegato']['type'];
    $allegato_name = $_FILES['allegato']['name'];
    
    // Creo 2 variabili che riempirò più avanti...
    $headers = "From: " . $mittente;
    $msg = "";
    
    // Verifico se il file è stato caricato correttamente via HTTP
    // In caso affermativo proseguo nel lavoro...
    if (is_uploaded_file($allegato))
    {
      // Apro e leggo il file allegato
      $file = fopen($allegato,'rb');
      $data = fread($file, filesize($allegato));
      fclose($file);
    
      // Adatto il file al formato MIME base64 usando base64_encode
      $data = chunk_split(base64_encode($data));
    
      // Genero il "separatore"
      // Serve per dividere, appunto, le varie parti del messaggio.
      // Nel nostro caso separerà la parte testuale dall'allegato
      $semi_rand = md5(time());
      $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
      
      // Aggiungo le intestazioni necessarie per l'allegato
      $headers .= "\nMIME-Version: 1.0\n";
      $headers .= "Content-Type: multipart/mixed;\n";
      $headers .= " boundary=\"{$mime_boundary}\"";
    
      // Definisco il tipo di messaggio (MIME/multi-part)
      $msg .= "This is a multi-part message in MIME format.\n\n";
    
      // Metto il separatore
      $msg .= "--{$mime_boundary}\n";
    
      // Questa è la parte "testuale" del messaggio
      $msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
      $msg .= "Content-Transfer-Encoding: 7bit\n\n";
      $msg .= $messaggio . "\n\n";
    
      // Metto il separatore
      $msg .= "--{$mime_boundary}\n";
    
      // Aggiungo l'allegato al messaggio
      $msg .= "Content-Disposition: attachment;\n";
      $msg .= " filename=\"{$allegato_name}\"\n";
      $msg .= "Content-Transfer-Encoding: base64\n\n";
      $msg .= $data . "\n\n";
    
      // chiudo con il separatore
      $msg .= "--{$mime_boundary}--\n";
    }
    else
    {
      $msg = $messaggio;
    }
    
    // Invio la mail
    if (mail($destinatario, $oggetto, $msg, $headers))
    {
      echo "<p>Mail inviata con successo!</p>";
    }else{
      echo "<p>Errore!</p>";
    }
    ?>
    file.htm

    Codice:
    <form action="formmail.php" method="POST" enctype="multipart/form-data" style="text-align: center">
    <font face="Comic Sans MS">
    <input type="hidden" name="destinatario" value="magik_dr@hotmail.it">
    </font>
    <table border="0" id="table6">
    <tr>
      <td><font face="Comic Sans MS">Tua Mail:</font></td>
      <td><font face="Comic Sans MS">
    	<input type="text" name="mittente" value="" size="31" /></font></td>
    </tr>
    <tr>
      <td><font face="Comic Sans MS">Oggetto:</font></td>
      <td><font face="Comic Sans MS">
    	<input type="text" name="oggetto" value="" size="31" /></font></td>
    </tr>
    <tr>
      <td><font face="Comic Sans MS">Messaggio:</font></td>
      <td><font face="Comic Sans MS"><textarea cols="26" rows="4" name="messaggio"></textarea></font></td>
      </tr>
    <tr>
      <td><font face="Comic Sans MS">Allega file:</font></td>
      <td><font face="Comic Sans MS"><input type="file" name="allegato" /></font></td>
    </tr>
    <tr>
      <td colspan="2">
    	<p align="center"><font face="Comic Sans MS"><input type="submit" value="Invia" /></font></td>
    </tr>
    </table>
    </form>
    in questa pagina http://magiksite.altervista.org/contattami.htm c'è il form in questione, solo che quando mi invia la mail, vorrei che dopo ritornasse al form, come fare? perchè se provate rimane in una pagina bianca che dice che la mail la inviata con successo, poi nel codice nn lo trovato, ma c'è un modo per mettere un limite alle dimensioni dell'allegato?

    grazie mille

  2. #2
    L'avatar di seneca
    seneca non è connesso Super Moderatore
    Data registrazione
    18-12-2004
    Residenza
    la Città Eterna
    Messaggi
    8,376

    Predefinito

    Al posto di
    Codice PHP:
    echo "<p>Mail inviata con successo!</p>";
    metti il codice per un redirect alla pagina del form.
    Comunque, secondo me, un messaggio di ok dovresti darlo all'utente.


    -- Aut Roma Aut Nihil!

  3. #3
    magiksite non è connesso Neofita
    Data registrazione
    30-06-2008
    Messaggi
    3

    Predefinito

    ma si, io voglio lasciarlo, ma che so, dopo due-tre secondi deve ritornare alla pagina del messaggio che so prima avevo questo qua
    http://magiksite.altervista.org/contattami.php
    ma nn mi inviava l'allegato e quindi lo cambiato con quest'altro qua, ma se si concludesse come quello di prima sarebbe meglio, si possono fare queste modifiche?

    codice primo form mail senza allegato

    Codice:
    <?php 
    if(empty($_POST['messaggio'])){ ?> 
    <form method="post" name="contatti" action="<?php echo $PHP_SELF; ?>" style="text-align: center"> 
    <?php 
    $o = $_GET['oggetto'];  
    $ogg = strtr($o, "_", " ");  
    ?> 
    <table border="0" id="table6"> 
      <tr> 
        <td><font face="Comic Sans MS">Tua E-mail:</font></td> 
        <td><font face="Comic Sans MS"><input type="text" size="36" name="email" maxlength="30" /></font></td> 
      </tr> 
      <tr> 
        <td><font face="Comic Sans MS">Oggetto:</font></td> 
    
        <td> 
        <font face="Comic Sans MS"> 
        <input type="text" size="36" name="nome" maxlength="30" value="<?php echo $ogg; ?>" /></font></td> 
      </tr> 
      <tr> 
        <td><font face="Comic Sans MS">Messaggio:</font></td> 
        <td><font face="Comic Sans MS"><textarea rows="7" cols="30" name="messaggio"></textarea></font></td> 
      </tr> 
      <tr> 
      <td>&nbsp;</td> 
      <td> <font face="Comic Sans MS"> <input type="submit" value="Invia Mail" /> <input type="reset" value="Cancella" /> 
        </font> 
        </td> 
      </tr> 
    </table></form>
    spero di aver dato abbastanza informazioni

Regole di scrittura

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