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

    mail() con immagini inline: meglio ciclare oppure...

    ciao a tutti,
    finalmente sono riuscito a inviare una email da php in formato html.

    Ecco il codice, preso da html.it (http://freephp.html.it/articoli/view...p?id=150&pag=4 )

    <?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 = "./images/miaimmagine.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("ricevente@dominio.it", $subject, $messaggio, $header) ) echo "e-mail inviata con successo!";
    else echo "errore nell'invio dell'e-mail!";
    ?>

    ho provato a racchiudere questo codice in un ciclo while che prende uno per uno l'indirizzo email degli utenti da un database mysql, stringa che inserisco in header al posto di CC:

    ovvero sostituisco a
    $header .= "CC: Altro Ricevente <altroricevente@dominio.net>\n";

    questa riga
    $header .= "CC: ".$email;

    dove $email ha come valore la stringa presa dal db nel ciclo corrente while.

    Però il problema è che l'email viene spedita solo all'indirizzo del primo ciclo. Forse potrebbe essere che cicla più velocemente di quanto il server possa invare le email con immagini?!?!

    Qualcuno sa indicarmi dove sbaglio?

  2. #2
    non puoi semplicemente creare un ciclo con gli indirizzi?

    $destinatario ="mail1@mail.com,mail2@mail.com,mail3@mail.com.... ";

    $destinatario lo puoi creare in un ciclo while, prendendo i dati dal DB.


    pppppoi fai un unica chiamata della funzione mail. no?


    la funzione mail supporta più indirizzi, basta che siano separati da una virgola
    http://www.trustweb.it - Web Development - Design 2D/3D - SEO & SEM

    Twitter http://twitter.com/#!/TrustWeb
    LinkedIn http://it.linkedin.com/in/trustweb

  3. #3
    si, potrei farlo e invece di metterli in CC il metto in BCC, ma in questo modo non posso ad esempio inserire nel corpo dati personali, come ad esempio il nome utente ecc ecc. comunque ora provo subito.

    grazie

  4. #4
    ho provato a mettere 2 email in CC separate da virgola, e a un indirizzo arriva (lo controllo con outlook), invece a quello yahoo non arriva alcuna email in nessun caso. quindi forse il problema è che l'email che invio con quello script nonè formattato in modo universale. Può essere?

  5. #5
    ho provato a inviare il messaggio html a tre indirizzi:
    - quello su outlook arriva ed è formattato correttamente
    - quello su libero arriva ma non riconosce gli stili
    - quello su yahoo non arriva proprio.

    Ora mi domando. Nel mio codice c'è qualcosa di troppo o qualcosa che manca perchè yahoo non riconosca il messaggio come spam?

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.