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

    strano problema con invio e-mail html

    Salve,
    ho un problema con l'invio di una newsletter in html tramite script php.

    Ho fatto dei test su vari indirizzi: uno di Libero, uno di Hotmail ed uno del mio dominio.
    L'e-mail è abbastanza semplice: un'immagine inserita nel corpo del messaggio con un url assoluto (http... ecc) e del semplice testo formattato con i tag html.
    Niente di fantascientifico dunque.

    Se vado a controllare la posta da webmail funziona tutto su tutte le caselle di posta a cui l'ho inviato, non mi finisce nella posta indesiderata su Hotmail, l'immagine si vede ed il testo è formattato.

    Se scarico i messaggi con Outlook Express va tutto bene con l'e-mail di Libero, ma con quella del mio dominio vedo solo il codice html!!

    Pensavo fosse un problema di qualche impostazione dell'Outlook perché le due caselle (quella di Libero e quella del mio dominio) sono su due identità separate, ma provando ad inoltrare da Outlook l'e-mail correttamente ricevuta su Libero all'indirizzo del mio dominio, riesco a vedere correttamente l'e-mail anche su quest'ultima casella che non visualizza, invece, quella ricevuta dallo script.

    A questo punto mi chiedo: dipende dallo script o da Outlook?

    E se dipende da Outlook è possibile che anche altri utenti ricevano l'e-mail visualizzando solo il codice html. Quindi come fare per risolvere il problema?
    Mandare il messaggio sia in testo normale che in html ammesso che in questo modo i vari client e webmail riescano effettivamente a visualizzare solo l'uno o l'altro? Ho provato a vedere qualcosa del genere su www.php.net ma a dire il vero non ci ho capito molto su come fare.

    Qualcuno ha idea della causa del problema e di come risolverlo?
    GRAZIE!!!!
    Nemesis

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    346
    Ho avuto lo stesso problema!
    ho risolto utilizzando questo script
    http://forum.html.it/forum/showthread.php?s=&threadid=513009&highlight=posta+ email+html
    chi la riceve in html ok gli altri andrannoa visualizzare solo il testo!
    cmq una guida che spiega bene la trovi qui:
    http://php.html.it/articoli/leggi/91...-html-con-php/ spero possa esserti d'aiuto!
    ciao

  3. #3
    Prima di tutto grazie mille per il link alla pillola. Molto interessante. Questa mi era proprio sfuggita, di solito leggo sempre le pillole.

    Una domanda: ma il codice per mandare le e-mail sia in html che con solo testo sarebbe quello del primo post? Perché mi sembra manchi il pezzo per il solo testo, almeno per quello che ho visto da php.net. Ho visto tutti i post, ma non mi sembra di aver visto qualcosa. In ogni caso dopo ci guardo meglio.

    Comunque penso di aver risolto il problema.
    Prima usavo il mio codice su server Windows. Il sito dove lo sto usando adesso, invece e su Linux e mi sono accorto che in una delle righe delle intestazioni mi era sfuggito un "\r" ovvero avevo nel codice

    Codice PHP:
    $headers .= "MIME-Version: 1.0\r\n"
    invece di quello corretto

    Codice PHP:
    $headers .= "MIME-Version: 1.0\n"
    Mi è bastato correggerlo e adesso visualizzo correttamente l'e-mail in html anche sulle caselle del mio dominio.

    Visto che nella pillola che mi hai segnalato ho visto alcuni riferimenti a problemi simili al mio o comunque a problemi di compatibilità tra server windows e linux vi posto questo pezzo di codice che potete trovare usato in uno script completo all'indirizzo http://it.php.net/manual/it/ref.mail.php

    Codice PHP:
    <?php # Is the OS Windows or Mac or Linux 
    if (strtoupper(substr(PHP_OS,0,3)=='WIN')) { 
      
    $eol="\r\n"
    } elseif (
    strtoupper(substr(PHP_OS,0,3)=='MAC')) { 
      
    $eol="\r"
    } else { 
      
    $eol="\n"
    ?>
    A seconda del vostro server, quindi, fate attenzione ad usare "\r\n" se su server Windows e solo "\n" se su server Linux. Per Mac solo "\r" ma non so quanti usino un server Mac.
    Spero che sia utile a qualcuno
    Probabilmente l'avrete già detto in mille post, ma si sa... repetita iuvant
    Nemesis

  4. #4
    Originariamente inviato da nemesis_83
    Una domanda: ma il codice per mandare le e-mail sia in html che con solo testo sarebbe quello del primo post? Perché mi sembra manchi il pezzo per il solo testo, almeno per quello che ho visto da php.net. Ho visto tutti i post, ma non mi sembra di aver visto qualcosa. In ogni caso dopo ci guardo meglio.
    Come non detto: trovato tutto nella guida di html.it
    Nemesis

  5. #5
    Come non detto... adesso mi sono infognato in un altro problema e non riesco a venirne fuori.

    Posto il codice:
    Codice PHP:
    $boundary "==String_Boundary_x" .md5(time()). "x";
    $headers .= "X-Mailer: PHP(".$_SERVER['REMOTE_ADDR'].")\n"
    $headers .= "MIME-Version: 1.0\n"
    $headers .= "Content-Type: multipart/alternative;\n"
    $headers .= " boundary=\"$boundary\";";
    $message "Se visualizzi questo testo il tuo programma non supporta i MIME\n\n";

    $message .= "--$boundary\n";
    $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    $message .= "Content-Transfer-Encoding: 7bit\n\n"
    $message .= $mestxt2;

    $message .= "--$boundary\n";
    $message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
    $message .= "Content-Transfer-Encoding: 7bit\n\n";
    $message .= $messtext2;

    // chiusura del messaggio con la stringa boundary
    $message .= "--$boundary--\n\n"
    Ho saltato la prima parte degli headers con from, reply, ecc. perché mi sembrano scontate.

    Funziona tutto bene. L'unico problema è che l'ultima riga dell'e-mail termina con
    "--==String_Boundary_x5bcca6ab0ec62eeaf1d2843fe47db46 bx-- "
    Ovvero con la stringa boundary.
    Eppure ho anche messo i due "--" alla fine della stringa proprio come ho visto in decine di esempi di codice.

    Qualcuno ha idea del perché??? Sono 2 ore che sto provando e riprovando

    EDIT
    Problema risolto... Se non metto "\n" dopo le variabili $messtext2 e $mestxt2 mi ritrovo con questo problema. Nel messaggio plain text l'avevo messo fin dall'inizio. In quello html pensavo bastasse chiudere tutti i tag o al massimo un
    e invece dovevo mettere anche lì il "\n".

    Tutto risolto
    Nemesis

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.