Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682

    Allegato Mail vuoto perche' ?

    Seguendo l'articolo di GM sulla funzione mail con allegato ho fatto alcune modifiche per adattarlo alle mie esigenze.
    Il file da allegare e' gia' sul server.
    Vi posto il codice, magari qualcuno ha gia avuto lo stesso problema e mi puo' aiutare ....

    $Destinatario = trim($_POST["dest"]);
    $Soggetto = trim($_POST["ogg"]);
    $Contenuto = trim($_POST["msg"]);


    $attach = '/public/mappa_mail.jpg';
    $file_size=filesize($attach);
    $file_name='mappa_mail.jpg';
    $file_type='image/jpeg';

    $boundary = md5(uniqid(microtime()));


    $file = @fopen($attach, "r");
    $contents = @fread($file, $file_size);
    $encoded_attach = chunk_split(base64_encode($contents));
    @fclose($file);


    $mail_headers = "MIME-version: 1.0\n";
    $mail_headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"";
    $mail_headers .= "X-attachments: $file_name\n";


    $mail_body = "--$boundary\n";
    $mail_body .= "Content-Type: text/plain; charset=us-ascii\n";
    $mail_body .= "Content-Transfer-Encoding: 7bit\n\n";
    $mail_body .= "$Contenuto\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";


    if(@mail($Destinatario, $Soggetto, $mail_body, $mail_headers)) { //

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

    } else {// ALTRIMENTI...

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

    }

    ?>
    IACO

  2. #2
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Ho provato anche ad allegare un file txt ma il risultato e' lo stesso la mail arriva ma l'allegato e' vuoto.
    IACO

  3. #3
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    ho provato anche a mettere questi due controllini

    $file = @fopen($attach, "r")or die ('non posso aprire il file');
    $contents = @fread($file, $file_size)or die ('non posso leggere il file');

    Per vedere se non apriva e leggeva i file,ma errori qua non ne da comunque,dunque se la mail arriva,il file da allegare lo apre e lo legge,se queste tre cose sono giuste dunque quale potrebbe essere il problema ?


    IACO

  4. #4
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    per stare sicuro ho provato anche a stampare a video il contenuto della variabile che legge il file,ed il file viene stampato a video correttamente e quindi anche letto correttamente.
    IACO

  5. #5
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Ma allora se la mail me la manda;
    Il file da allegare lo legge e lo apre;
    Il file lo allega;
    Perche' mi arriva vuoto non capisco proprio....
    Che non si possono mandare mail da web con PHP con allegati che risiedono sullo stesso server ? deve forse essere Uplodato per forza ? non credo proprio....
    IACO

  6. #6
    sono stupido anche io

    togli le @ da fread e fopen

    $file = @fopen($attach, "r")or die ('non posso aprire il file');
    $contents = @fread($file, $file_size)or die ('non posso leggere il file');

    deve diventare


    $file = fopen($attach, "r");
    $contents = fread($file, $file_size);


    dicci ora che errore ti dà...


    ciao
    ratatuia

  7. #7
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    come hai letto dai post precedenti,errori non ne da ho provato a stampare a video anche il contenuto della var che contiene il file,e' tutto ok....comunque sono arrivato a due considerazioni:
    1 ho trovato un altro script che funziona se ti serve lo posto.
    2 siccome mi piaceva far funzionare anche questo credo che l'inghippo stia qui:
    // premetto che di php non sono esperto

    $boundary = md5(uniqid(microtime()));

    //microtime e' per unix/linux

    infatti andando a controllare la posta via web invece che via client la dimensione del msg era giusta ma poi se andavi ad aprire l'allegato era 0 byte e dice che l'id non e' valido
    IACO

  8. #8
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    infatti andando a cambiare quella funzione e sostituendola con


    $boundary = "<<<:" . md5(uniqid(mt_rand(), 1));

    ed andando ad inserire i vari \r\n invece che \n (probabilmente il tutorial era studiato per server linux,non per server windows) ....

    funziona ca**o.

    Dopo due giorni 26 mail di prova 2 tutorials e 15 3d letti .....

    Certo pero' che fatica fare una cosa che dovrebbe essere semplice.....
    Adesso ho due script funzionanti,uno che mette l'immagine dentro il corpo della mail,e uno che l'allega.
    Entrambi hanno pro e contro,dobbiamo modificarli a seconda del server su cui gireranno......
    Ringraziandoti del tuo aiuto ti interessano gli script ? (anche se immagino che tu gia ne abbia di tuoi funzionanti)

    IACO

  9. #9
    Originariamente inviato da iaco74
    infatti andando a cambiare quella funzione e sostituendola con


    $boundary = "<<<:" . md5(uniqid(mt_rand(), 1));

    ed andando ad inserire i vari \r\n invece che \n (probabilmente il tutorial era studiato per server linux,non per server windows) ....

    funziona ca**o.

    Dopo due giorni 26 mail di prova 2 tutorials e 15 3d letti .....

    Certo pero' che fatica fare una cosa che dovrebbe essere semplice.....
    Adesso ho due script funzionanti,uno che mette l'immagine dentro il corpo della mail,e uno che l'allega.
    Entrambi hanno pro e contro,dobbiamo modificarli a seconda del server su cui gireranno......
    Ringraziandoti del tuo aiuto ti interessano gli script ? (anche se immagino che tu gia ne abbia di tuoi funzionanti)


    grazie mille, ma per quei pochi allegati che devo mandare in automatico sono già sistemato

    ratatuia

  10. #10
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    ok ciao e grazie per il tuo tempo alla prossima
    IACO

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 © 2024 vBulletin Solutions, Inc. All rights reserved.