Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Inviare immagine via mail: come si fa?

    Ciao a tutti,

    sto studiando il codice esposto nell'aticolo E-mail in formato HTML con PHP di cui vi allego per praticità il codice:
    codice:
    <?php
    // costruiamo alcune intestazioni generali
    $header = "From: Inviante <inviante@dominio.org>\n";
    //$header .= "CC: Altro Ricevente <altroricevente@dominio.net>\n";
    $header .= "X-Mailer: Il nostro Php\n";
    
    // generiamo le stringhe utilizzate come separatori
    $boundary = "==String_Boundary_x" .md5(time()). "x";
    $boundary2 = "==String_Boundary2_y" .md5(time()). "y";
    
    // costruiamo le intestazioni specifiche per un messaggio
    // con parti relazionate
    $header .= "MIME-Version: 1.0\n";
    $header .= "Content-Type: multipart/related;\n";
    $header .= " type=\"multipart/alternative\";\n";
    $header .= " boundary=\"$boundary\";\n\n";
    
    $messaggio = "Se visualizzi questo testo il tuo programma non supporta i MIME\n\n";
    
    // il primo segmento del multipart/related
    // è definito come multipart/alternative
    $messaggio .= "--$boundary\n";
    $messaggio .= "Content-Type: multipart/alternative;\n";
    $messaggio .= " boundary=\"$boundary2\";\n\n";
    
    // sezione alternativa in puro testo
    $messaggio .= "--$boundary2\n";
    $messaggio .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    $messaggio .= "Content-Transfer-Encoding: 7bit\n\n";
    $messaggio .= "Messaggio alternativo in formato testo.\n\n";
    
    // sezione alternativa in formato html
    $messaggio .= "--$boundary2\n";
    $messaggio .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
    $messaggio .= "Content-Transfer-Encoding: 7bit\n\n";
    $messaggio .= "<html><body>
    
    Questo messaggio è in formato html ma ha una parte testo.</p>
    
    Visita il sito <a href=\"http://www.html.it\">www.html.it</a><img src=\"cid:MiaImmagine123\"></p></body></html>\n";
    
    // chiusura della sezione multipart/alternative
    $messaggio .= "--$boundary2--\n";
    
    // seconda sezione del multipart/related contenente l'immagine
    $messaggio .= "--$boundary\n";
    $messaggio .= "Content-ID: <MiaImmagine123>\n";
    $messaggio .= "Content-Type: image/jpeg\n";
    $messaggio .= "Content-Transfer-Encoding: base64\n\n";
    
    $allegato = "../immagini/logo.jpg";
    $file = fopen($allegato,'rb');
    $data = fread($file,filesize($allegato));
    fclose($file);
    
    $data = chunk_split(base64_encode($data));
    $messaggio .= "$data\n\n";
    
    // chiusura della sezione multipart/related
    $messaggio .= "--$boundary--\n";
    
    $subject = "oggetto del messaggio alternativo con immagini inline";
    
    if( @mail("tizio@localhost", $subject, $messaggio, $header) ) echo "e-mail inviata con successo!";
    else echo "errore nell'invio dell'e-mail!";
    ?>
    Il codice funziona, nel senso che effettivamente la mail viene trasmessa ma l'immagine allegata non c'è: cosa sbaglio?
    Naturalmente per testare questo script ho già installato un mail server che ho precedentemente testato inviando delle mail tra due account che ho creato appositamente, perciò non credo che il problema dipenda da questo.

    Chi mi aiuta?
    cosmosub
    --------
    "So di non sapere" - Socrate

  2. #2
    quella pillola è scritta correttamente, quindi l'unica cosa che puoi sbagliare potrebbe essere il percorso del file.

  3. #3
    Infatti,

    lo script funziona, la mail viene effettivamente inviata, anche in formato HTML con tutta la relativa formattazione, anche il file viene allegato, ma quando scarico la mail con Outlook Express la dimensione del file è pari a 0Kb!
    Le ho provate tutte: ho provato almeno altri 3 script, tra cui uno che consente di inviare mail da un form in cui è possibile specificare il file da allegare ... niente!
    Comincio a sospettare che ci sia qualcosa che non va a livello di php.ini, magari qualche impostazione di sicurezza?? :master:
    cosmosub
    --------
    "So di non sapere" - Socrate

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.