[PHP] inviare form con allegato tramite una mail

Discussione in 'PHP' iniziata da iper00, 19 Febbraio 2019.

  1. iper00

    iper00 Nuovo Utente

    Registrato:
    19 Febbraio 2019
    Messaggi:
    1
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Salve giovani.
    Sono nuovo ed ho un piccolisssssimo problema!
    Ho creato questo form da un sito che te li crea da zero, in html e con un php provvedo all'invio su un indirizzo email che ho scelto. Fin qui tutto bene! Il problema è la possibilità di mettere un allegato nell'html.....ho seguito varie guide sia qui che in giro su internet. Ma quando credevo di esserci riuscito, mi sbagliavo!
    E' una sensazione orribile, che solo Voi potete comprendere :(
    Ve ne sarei grato se ci dareste un'occhiata:

    HTML

    Codice:
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>INTESTAZIONE</title>
    <link rel="stylesheet" type="text/css" href="view.css" media="all">
    <script type="text/javascript" src="view.js"></script>
    
    </head>
    <body id="main_body" >
      
        <div align="center"><img id="top" src="top.png" alt=""></div>
        <div id="form_container">
        <form action="elabora_.php" method="post" name = "utente" enctype="multipart/form-data">
            <h1><a>SOCIETA'</a></h1>
            <form id="form_47688" class="appnitro" enctype="multipart/form-data" method="post" action="">
                        <div class="form_description">
            <div align="center"><img src="logocapital.png"></div>
                <div align="center"><p>Servizio Assistenza Dipendenti</p></div>
            </div>                     
                <ul >
                        <li id="li_6" >
            <label class="description" for="element_6">CANTIERE DI APPARTENENZA </label>
            <div>
            <select class="element select medium" id="element_6" name="element_6">
                <option value="" selected="selected" required></option>
    <option value="CANTIERE  DI APPARTENENZA" >CANTIERE DI APPARTENENZA</option>
    <option value="ALTRO" >ALTRO - SPECIFICARE NEI DETTAGLI</option>
            </select>
            </div>
            </li>        <li id="li_2" >
            <label class="description" for="element_2">NUMERO POSIZIONE </label>
            <div>
                <input id="element_2" name="element_2" class="element text small" type="text" maxlength="5" value="" required pattern="[0-9]{1,5}"/>
            </div><p class="guidelines" id="guide_2"><small>Il numero di posizione è presente sulla Sua busta paga, in alto a sinistra.</small></p>
            </li>        <li id="li_1" >
            <label class="description" for="element_1">COGNOME E NOME </label>
            <div>
                <input id="element_1" name="element_1" class="element text medium" type="text" maxlength="255" value="" required pattern="[A-Z ]+" onkeyup="this.value = this.value.toUpperCase();"/>
            </li>        <li id="li_4" >
            <label class="description" for="element_4">NUMERO DI TELEFONO </label>
            <div>
                <input id="element_4" name="element_4" class="element text medium" type="text" maxlength="255" value="" required pattern="[0-9]+"/>
            </div>
            </li>        <li id="li_5" >
            <label class="description" for="element_5">EMAIL </label>
            <div>
                <input id="element_5" name="element_5" class="element text medium" type="text" maxlength="255" value="" required pattern=".+@.+..+[a-z]"/>
            </div>
            </li>        <li id="li_7" >
            <label class="description" for="element_7">TIPO DI ASSISTENZA </label>
            <span>
                <input id="element_7_1" name="element_7" class="element radio" type="radio" value="ERRORE IN BUSTA PAGA" required/>
    <label class="choice" for="element_7_1">ERRORE IN BUSTA PAGA</label>
            </span>
            </li>        <li id="li_3" >
            <label class="description" for="element_3">DETTAGLIO </label>
            <div>
                <textarea id="element_3" name="element_3" class="element textarea large"required pattern="[A-Z ]+" onkeyup="this.value = this.value.toUpperCase();"></textarea>
    <tr>
      <td>Allega file:</td>
      <td><input type="file" name="allegato" /></td>
    </tr> 
                    <li class="buttons">
     
                    <input type="hidden" name="form_id" value="47688"/>
                  
                    <input id="saveForm" class="button_text" type="submit" name="invia" value="INVIA"/>
                    <input id="reset" class="button_text" type="reset" name="cancella" value="CANCELLA"/>
                    <li class="buttons">
    PHP:
    <html lang="it">
    <head>

    <meta charset="utf-8">
    <title>INTESTAZIONE</title>
    <link rel="stylesheet" href="stili.css">
    </head>
    <body>
    <?php
    $mail_to 
    "mail@mail.it";
    $mail_subject "RICHIESTA ASSISTENZA - ".$_POST['element_6'];
    $mail_body .= "\n POSIZIONE: " .$_POST['element_2']. " \n";
    $mail_body .= "\n NOMINATIVO: " .$_POST['element_1']. " \n";
    $mail_body .= "\n CANTIERE: " .$_POST['element_6']. " \n";
    $mail_body .= "\n EMAIL: " .$_POST['element_5']. " \n";
    $mail_body .= "\n NUMERO DI TELEFONO: " .$_POST['element_4']. " \n";
    $mail_body .= "\n TIPO DI ASSISTENZA: " .$_POST['element_7']. " \n";
    $mail_body .= "\n DETTAGLIO: " .$_POST['element_3']. " \n";
    $mittente .= "From: <".$_POST['element_1'].">\n";
    $mail_body stripslashes($mail_body);
    $allegato $_FILES['allegato']['tmp_name'];
    $allegato_type $_FILES['allegato']['type'];
    $allegato_name $_FILES['allegato']['name'];
    if (
    is_uploaded_file($allegato))
    {
      
    $file fopen($allegato,'rb');
      
    $data fread($filefilesize($allegato));
      
    fclose($file);
      
    $data chunk_split(base64_encode($data));
      
    $semi_rand md5(time());
      
    $mime_boundary "==Multipart_Boundary_x{$semi_rand}x";
      
    $headers .= "\nMIME-Version: 1.0\n";
      
    $headers .= "Content-Type: multipart/mixed;\n";
      
    $headers .= " boundary=\"{$mime_boundary}\"";
      
    $msg .= "This is a multi-part message in MIME format.\n\n";
      
    $msg .= "--{$mime_boundary}\n";
      
    $msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
      
    $msg .= "Content-Transfer-Encoding: 7bit\n\n";
      
    $msg .= $mail_body "\n\n";
      
    $msg .= "--{$mime_boundary}\n";
      
    $msg .= "Content-Disposition: attachment; filename=\"{$allegato_name}\"\n";
      
    $msg .= "Content-Transfer-Encoding: base64\n\n";
      
    $msg .= $data "\n\n";
      
    $msg .= "--{$mime_boundary}--\n";
    }
    else
    {
      
    $msg $mail_body;
    }
    if (
    mail($mail_subject$mittente$msg$headers))
    {
      echo 
    "<p>Mail inviata con successo!</p>
      <p>Sarà ns cura ricontattarla. Grazie!</p>"
    ;
    }else{
      echo 
    "<p>Errore!</p>";
    }
    ?>
    Ovviamente quest'ultimo è quello che ho provato per ultimo. Diciamo che da "$allegato = $_FILES['allegato']['tmp_name'];" in poi sta il problema perchè senza, con la chiusura dovuta, il form parte e arriva.
    Sono nelle Vs mani.
    Grazie.
     
    Ultima modifica di un moderatore: 19 Febbraio 2019
  2. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.908
    Mi Piace Ricevuti:
    290
    Punteggio:
    83
    Sesso:
    Maschio
    @iper00
    Quando posti codice PHP devi usare il tag php.png non il tag code.gif
    Grazie
    Questa volta te lo ho corretto io
     
    A iper00 piace questo elemento.
Sto caricando...

Condividi questa Pagina