Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    9

    Invio di email multiple con php da un form HTML

    Invio di allegati multipli!

    Buongiorno a tutti,
    ho creato una form in HTML per spedire alcuni dati e due file che mi servono all'interno di una mail.
    La mail arriva correttamente ma i file sembrano arrivare con 0kb quindi come se non fossero stati caricati.

    Di seguito l'errore che ricevo quando spedisco il form.

    Warning: file_get_contents(File1-test.jpg): failed to open stream: No such file or directory in /web/htdocs/www.mysite.net/home/email.php on line 26 Warning: file_get_contents(File2-test.pdf): failed to open stream: No such file or directory in /web/htdocs/www.mysite.net/home/email.php on line 26

    Messaggio spedito correttamente a myemail@mysite.net!


    Contatti.html
    codice HTML:
    <form id="form1" name="form1" method="post" action="email.php" enctype="multipart/form-data">
    
    <fieldset>
    <legend>Canditatura</legend>
    <label>Nome:</label> <input type="text" placeholder="Inserisci il tuo nome" name="nome"  size="30px" required="true"><br>
    <label>Cognome:</label> <input type="text" placeholder="Inserisci il tuo cognome" name="cognome" size="30px" required="true"><br>
    <label>Email:</label> <input type="email" name="email" placeholder="example@example.it" size="30px" required="true"><br>
    <label>Telefono:</label> <input type="tel" name="telefono" placeholder="+39" size="30px"><br>
    <label>Allegato 1:</label> <input type="file" id="allegato" name="allegato" required="true"><br>
    <label>Allegato 2:</label> <input type="file" id="allegato2" name="allegato2" required="true"><br>
    <br><br>
    <label class="lprivacy"><input type="checkbox" required="true">Accetto normativa sulla Privacy</label><input type="submit" value="Invia Canditatura" name="submit">
    </fieldset>
    </form>


    File email.php

    Codice PHP:
    <?php
    $allegato 
    $_FILES['allegato']['name'];
    $allegato2 $_FILES['allegato2']['name'];
    $email $_POST['email'];
    $nome $_POST['nome'];
    $cognome $_POST['cognome'];
    $telefono $_POST['telefono'];
    $files = array();

      
    mail_attachment("myemail@mysite.net","Subject","Nuova canditatuda da <b>$nome $cognome</b>. <br> Telefono: $telefono <br> Email: $email ",array("$allegato","$allegato2"));
      function 
    mail_attachment($to$subject$message$files) {
          
    $headers "From: no-reply@mail.com";
          
    $semi_rand md5(time());
          
    $mime_boundary "==Multipart_Boundary_x{$semi_rand}x";
          
    $headers .= "\nMIME-Version: 1.0\n" "Content-Type: multipart/mixed;\n" " boundary=\"{$mime_boundary}\"";

          
    $message "This is a multi-part message in MIME format.\n\n" "--{$mime_boundary}\n" "Content-Type: text/html; charset=\"iso-8859-1\"\n" "Content-Transfer-Encoding: 7bit\n\n" $message "\n\n";
          
    $message .= "--{$mime_boundary}\n";

          foreach (
    $files as $file) {

            
    $filename end(explode("/",$file));
            
    $data file_get_contents($file);

            
    $data chunk_split(base64_encode($data));

            
    $message .= "Content-Type: {\"application/octet-stream\"};\n" " name=\"$file\"\n" .
              
    "Content-Disposition: attachment;\n" " filename=\"$file\"\n" .
              
    "Content-Transfer-Encoding: base64\n\n" $data "\n\n";
            
    $message .= "--{$mime_boundary}\n";
          }
            echo (@
    mail($to$subject$message$headers)) ? "<p>Messaggio spedito correttamente a $to!</p>" "<p>ERRORE! Messaggio non spedito a $to!</p>";
      } 
    // mail-attachment
    ?>
    Grazie per l'aiuto!
    Ultima modifica di prova17; 22-10-2015 a 12:42

  2. #2
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    L'errore dovrebbe essere abbastanza chiaro. Non esistono file chiamati File1-test.jpg e File2-test.pdf nelle cartelle che hai specificato in `include_path`.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    9
    Grazie per la risposta.
    Di solito i file cambiano nome perché l'utente potrebbe scegliere qualsiasi nome file.

    Perdonatemi ma non sono un esperto di php e non so dove sono le cartelle di include_path.

    C'è una maniera per risolvere questo?

  4. #4
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Passa a file_get_contents il percorso assoluto del file.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    9
    Grazie ancora per l'aiuto.
    Ho inserito le variabile dei file che invio dal form HTML.
    Ho scritto cosi:

    $data = file_get_contents($file, $allegato, $allegato2);

    La mail arriva pero mi da sempre lo stesso errore i file sembrano corrotti.

    Grazie per l'aiuto e scusami se non sono espertissimo di php.
    THANKS

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    9
    Allora sono riuscito a far arrivare i file correttamente alla casella di posta, questa volta non sono corrotti ma ho un problema.
    I file arrivano con strani nomi tipo questo --> > /tmp/phpJih9x2.

    Che cosa sono?
    Qualcuno mi potrebbe aiutare a capire? Sembra un errore banale ma non trovo soluzione.

    Allego il file PHP.
    GRAZIE!


    Codice PHP:
    <?php
    $allegato 
    $_FILES['allegato']['tmp_name'];
    $allegato_type $_FILES['allegato']['type'];
    $allegato_name $_FILES['allegato']['name'];

    $allegato2 $_FILES['allegato2']['tmp_name'];
    $allegato2_type $_FILES['allegato2']['type'];
    $allegato2_name $_FILES['allegato2']['name'];

    $email $_POST['email'];
    $nome $_POST['nome'];
    $cognome $_POST['cognome'];
    $telefono $_POST['telefono'];


      
    mail_attachment("miaemail@miosito.com","Subject","Nuova canditatuda da <b>$nome $cognome</b>. <br> Telefono: $telefono <br> Email: $email ",array("$allegato","$allegato2"));
      function 
    mail_attachment($to$subject$message$files) {
          
    $headers "From: no-reply@mail.com";
          
    $semi_rand md5(time());
          
    $mime_boundary "==Multipart_Boundary_x{$semi_rand}x";
          
    $headers .= "\nMIME-Version: 1.0\n" "Content-Type: multipart/mixed;\n" " boundary=\"{$mime_boundary}\"";

          
    $message "This is a multi-part message in MIME format.\n\n" "--{$mime_boundary}\n" "Content-Type: text/html; charset=\"iso-8859-1\"\n" "Content-Transfer-Encoding: 7bit\n\n" $message "\n\n";
          
    $message .= "--{$mime_boundary}\n";


          foreach (
    $files as $file) {

            
    $filename end(explode("/",$file));
            
    $data file_get_contents($file);

            
    $data chunk_split(base64_encode($data));

            
    $message .= "Content-Type: {\"application/octet-stream\"};\n" " name=\"$file\"\n" .
              
    "Content-Disposition: attachment;\n" " filename=\"$file\"\n" .
              
    "Content-Transfer-Encoding: base64\n\n" $data "\n\n";
            
    $message .= "--{$mime_boundary}\n";
          }
            echo (@
    mail($to$subject$message$headers)) ? "<p>Messaggio spedito correttamente a $to!</p>" "<p>ERRORE! Messaggio non spedito a $to!</p>";
      } 
    // mail-attachment

    ?>

Tag per questa discussione

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.