Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Email con allegato

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    266

    Email con allegato

    Buonasera a tutti!

    Ho questo codice per l'invio di un email con allegato. L'email mi arriva i campi da compilare pure l'allegato anche, l'unico problema è che l'allegato arriva 0kb cioè vuoto. sapete dirmi come mai?

    Codice PHP:
    <?php
    // RENDIAMO LO SCRIPT COMPATIBILE CON LE VERSIONI DI PHP < 4.1.0
    if(!isset($_POST)) $_POST $HTTP_POST_VARS;
    if(!isset(
    $_FILES)) $_FILES $HTTP_POST_FILES;

    // RIPULIAMO I VARI CAMPI DEL MODULO
    $Nome trim($_POST["nome"]);
    $Cognome trim(stripslashes($_POST["cognome"]));
    $Email trim(stripslashes($_POST["email"]));
    $to="prova@prova.it";
    $oggetto="Curriculum Vitae";
    $messaggio="
    Nome: 
    $Nome
    Cognome: 
    $Cognome
    Email: 
    $Email";

    // ASSEGNIAMO A VARIABILI PIU' LEGGIBILI, LE PROPRIETA' DELL'ALLEGATO
    $attach $_FILES["allegato"]["tmp_name"];
    $file_name $_FILES["allegato"]["name"];
    $file_type $_FILES["allegato"]["type"];
    $file_size $_FILES["allegato"]["size"];

    // DELIMITATORE
    $boundary md5(uniqid(microtime()));

    // APRIAMO L'ALLEGATO PER LEGGERLO E CODIFICARLO
    $file = @fopen($attach"r");
    $contents = @fread($file$file_size);
    $encoded_attach chunk_split(base64_encode($contents));
    @
    fclose($file);

    // INTESTAZIONI DELLA MAIL
    $mail_headers .= "MIME-version: 1.0\n";
    $mail_headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"";
    $mail_headers .= "X-attachments: $file_name\n";
    $mail_headers .= "From: $Nome $Cognome <$Email>\r\n";

    // COSTRUIAMO IL CORPO DELLA MAIL
    $mail_body "--$boundary\n";
    $mail_body .= "Content-Type: text/plain; charset=us-ascii\n";
    $mail_body .= "Content-Transfer-Encoding: 7bit\n\n";
    $mail_body .= "$messaggio\n\n";
    $mail_body .= "--$boundary\n";
    $mail_body .= "Content-type: $file_type; name=\"$file_name\"\n";
    $mail_body .= "Content-Transfer-Encoding: base64\n";
    $mail_body .= "$encoded_attach\n";
    $mail_body .= "--$boundary--\n";

    // INVIO DELLA MAIL
    if(@mail($to$oggetto$mail_body$mail_headers)) { // SE L'INVIO È ANDATO A BUON FINE...

    echo "La mail è stata inoltrata con successo.";

    } else {
    // ALTRIMENTI...

    echo "Si sono verificati dei problemi nell'invio della mail.";

    }

    ?>
    Ovviamente c'è anche il form:

    codice:
    <p class="var"><FORM ACTION="invia.php" enctype="multipart/form-data" METHOD="POST">
      <p class="form"><label>Nome:</label> <input type="text" name="nome" size="20" /></p>
      <p class="form"><label>Cognome:</label><input type="text" name="cognome" size="20" /></p>
      <p class="form"><label>Email:</label><input type="text" name="email" size="20" /></p>  
      <p class="form">
        <label>Allegato:</label>
    
    <input type="file" name="allegato" size="20" /></p>
    <p class="form">
        <input type="submit" style="background-color:#454FA4" value="Invia" /></p>
    
    </form></p>

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    266
    potete chiudere risolto mancava una riga:
    $mail_body .= "Content-disposition: attachment; filename =\"$file_name\"\n\n";

  3. #3

    Provato ma non va

    Ho provato a fare questo form senza mandare allegato.
    ma non mi arriva al mio indirizzo hotmail perchè ? cosa sbaglio ? dopo che clicco su invio mi esce la pagina bianca :-( e l'email nn arriva ho messo i due file nel mio server cosa sbaglio ?

  4. #4
    Salve ho provato ad eseguire il tuo script, ma mi da il seguente errore
    ( ! ) Notice: Undefined variable: mail_headers in C:\wamp\www\mailProva.php on line 33
    Versione PHP 5.3.5

    Potresti rispondermi?
    Grazie mille in anticipo

  5. #5
    Scusami, problema risolto, anche se la mail non viene inviata e non riesco a capire il perchè. Te in che ambiente la stai inviando?
    Bisogna avere delle applicazioni specifiche?

  6. #6
    Scsa io ho aggiunto la riga
    codice:
    $mail_body .= "Content-disposition: attachment; filename =\"$file_name\"\n\n";
    però' l'allegato mi arriva ma non me lo apre perchè dice che sono 0 Kb

  7. #7
    Dove l'hai aggiunto? Dovrebbe andare qui:

    Codice PHP:
    ...
    $mail_body .= "Content-Transfer-Encoding: base64\n";

    $mail_body .= "Content-disposition: attachment; filename =\"$file_name\"\n";

    $mail_body .= "$encoded_attach\n";
    $mail_body .= "--$boundary--\n"
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    GRAZIE MILLE FUNZIONA!!!!

    visto che sei così gentile ne approfitto....

    posso mettere dei campi obbligatori?
    posso fare 3 allegati?

    GRAZIE

  9. #9
    Per quanto riguarda più allegati credo, se non ricordo male, che basti ripetere il seguente codice per ciascun allegato:

    Codice PHP:
    $mail_body .= "Content-Transfer-Encoding: base64\n";
    $mail_body .= "Content-disposition: attachment; filename =\"$file_name\"\n";
    $mail_body .= "$encoded_attach\n";
    $mail_body .= "--$boundary--\n"
    anche se io ti consiglierei di utilizzare PHPMailer per gestire l'invio delle mail.
    Per aggiungere campi obbligatori spetta a te effettuare i dovuti controlli sui parametri che ti arrivano dall'eventuale form.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  10. #10
    Codice PHP:
    $mail_body .= "Content-Transfer-Encoding: base64\n";
    $mail_body .= "Content-disposition: attachment; filename =\"$file_name\"\n";
    $mail_body .= "$encoded_attach\n";
    $mail_body .= "--$boundary--\n"
    Scusa ma me ne allega sempre uno solo....
    non sono programmatore ma webdesigner non mastico molto il codice....

    PHPMailer l'ho letto in molti articoli ma non so come fare.....

    come faccio a sostituire echo "La mail è stata inoltrata con successo.";
    con echo "una pagina del sito";

    grazie gentilissimo

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.