Visualizzazione risultati 1 fino 9 di 9

Discussione: [PHP] Problemi mail() e Apache

  1. #1
    Guest

    Predefinito [PHP] Problemi mail() e Apache

    Ciao a tutti,
    ieri di buona volontà mi sono messo a realizzare uno script che mi permetta di inviare tramite un form, una mail in formato HTML.
    La cosa strana e assurda è che fino a ieri pomeriggio, riuscivo ad inviare del testo con tag come <b></b> - <i></i> - <code></code> e perfino anche link!
    Inoltre riempiendo 2 appositi campi, uno NOME e uno EMAIL MITTENTE, ero in grado di far visualizzare il mittente dell'email inviata.

    Oggi invece con mia amara sorpresa, ho notato che le email le spedisce tutte sotto nome di APACHE e per di più, account email come Hotmail o Gmail non mi leggono più il formato HTML che fino a ieri inviavo.

    Vi posto una porzione di codice interessata, ma a me sembra (e sono sicuro) che sia tutto in regola.
    Codice PHP:
    [...]

    // Creo la mail in HTML
    $header = "From: $name <$mitt>\n";
    $header .= "Bcc: $dest\n";
    $header .= "X-Mailer: PHP\n";

    // genero la stringa che funge da separatore nel caso in cui alcuni server non leggono HTML
    $boundary = "==String_Boundary_x" .md5(time()). "x";

    // costruisco le intestazioni che specificano un messaggio costituito da più parti alternative
    $header .= "MIME-Version: 1.0\n";
    $header .= "Content-Type: multipart/alternative;\n";
    $header .= " boundary=\"$boundary\";\n\n";

    // questa stringa indica che il server non legge mail in HTML
    $msg = "Se visualizzi questo testo il tuo programma non supporta il formato mail HTML\n\n";

    // inizio la parte HTML
    $header .= "--$boundary\n";
    $header .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
    $header .= "Content-Transfer-Encoding: 7bit\n\n";
    $msg .= "$messaggio";

    // chiusura del messaggio con la stringa boundary
    $header .= "--$boundary--\n";

    // Creo la mail aggiungendo i vari dati
    mail($dest,$ogg,$msg,$header);

    [...]
    Spero che mi potrete aiutare

    Saluti.
    Ivan

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Queste:
    Codice PHP:
    $header .= "--$boundary\n";
    $header .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
    $header .= "Content-Transfer-Encoding: 7bit\n\n";
    non le devi mettere dentro $header, ma dentro $msg:
    Codice PHP:
    $header .= "MIME-Version: 1.0\n";
    $header .= "Content-Type: multipart/alternative;\n";
    $header .= " boundary=\"$boundary\";\n\n";

    $messaggio = "messaggio di errore\n\n";

    $messaggio .= "--$boundary\n";
    $messaggio .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    $messaggio .= "Content-Transfer-Encoding: 7bit\n\n";
    $messaggio .= "Messaggio in formato testo.\n\n";

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

    $messaggio .= "Messaggio formato HTML";

    $messaggio .= "--$boundary--\n";
    p.s. perché utilizzi boundary (lo so, lo so)

    Ciao!

  3. #3
    Guest

    Predefinito

    perchè Boundary è un separatore che permette al client di posta di disinguere le multipart e le alternative, ma presumo che tu questo lo sapevi già :)
    La fonte è: http://php.html.it/articoli/leggi/91...-html-con-php/

    Ma cosa ha Boundary che non va?

    Comunque se cambio quelle stringhe come dici tu, me le ritrovo nel corpo dell'intera email, è normale?
    Infatti all'inizio avevo fatto come dici tu e poi l'ho cambiato proprio perchè notavo questa cosa.

    Ciao :)

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Prova così: (a me funziona):

    Codice PHP:
    <?php
    $header
    = "From: tuo_indirizzo@tuo_dominio.com\n";
    $header .= "CC: tuo_indirizzo@tuo_dominio.com\n";
    $header .= "X-Mailer\n";

    $boundary = "==String_Boundary_x" .md5(time()). "x";

    $header .= "MIME-Version: 1.0\n";
    $header .= "Content-Type: multipart/alternative;\n";
    $header .= " boundary=\"$boundary\";\n\n";

    $messaggio = "Se visualizzi questo testo il tuo programma non supporta i MIME\n\n";


    $messaggio .= "--$boundary\n";
    $messaggio .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    $messaggio .= "Content-Transfer-Encoding: 7bit\n\n";
    $messaggio .= "Messaggio in formato testo.\n\n";


    $messaggio .= "--$boundary\n";
    $messaggio .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
    $messaggio .= "Content-Transfer-Encoding: 7bit\n\n";
    $messaggio .= <<< EOD
    <html>
    <body>
    testo in HTML
    </body>
    </html>
    EOD;
    $messaggio .= "\n";

    $messaggio .= "--$boundary--\n";

    $subject = "Oggetto";

    if( @
    mail("TUA_MAIL@TUO_DOMINIO.com", $subject, $messaggio, $header) ) echo "e-mail inviata con successo!";
    else echo
    "errore nell'invio dell'e-mail!";
    ?>
    perchè Boundary è un separatore che permette al client di posta di disinguere le multipart e le alternative
    Sisi... ma c'è anche altro

    Ciao!

    EDIT:

    In effetti è strano!: a me fino a poco tempo fa funzionava!.. invece adesso ritrovo quel testo dentro la mail
    Ultima modifica di alemoppo : 17-04-2010 alle ore 16.16.05

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Prova così: (a me funziona):
    EDIT:

    In effetti è strano!: a me fino a poco tempo fa funzionava!.. invece adesso ritrovo quel testo dentro la mail
    Evviva, allora non sono solo io pazzo
    Ma può essere che stanno smanettando nei server e/o hanno negato qualche permesso particolare?

    Il tuo codice devo provarlo lo stesso? O fa lo stesso scherzo del mio?

    Grazie molto per il tuo aiuto :)

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Ma può essere che stanno smanettando nei server e/o hanno negato qualche permesso particolare?

    Il tuo codice devo provarlo lo stesso? O fa lo stesso scherzo del mio?
    Sì... confermo che non funziona più il bounday... adesso voglio vedere come fanno a fare le fakemail con altervista

    Ciao!

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Sì... confermo che non funziona più il bounday... adesso voglio vedere come fanno a fare le fakemail con altervista

    Ciao!
    E quindi non posso risolvere il mio problema?
    Prima mi hai accennato che ci sono metodi alternativi a Boundary...

    Ciao e grazie.

  8. #8
    Guest

    Predefinito

    Salve,
    ho dei problemi tecnici con un mio script in PHP per compilare un form. Nel mio spazio è disabilitata la funzione mail del PHP?
    Lo script mi funzionava su un altro spazio web.
    Potete aiutarmi?
    Grazie.

  9. #9
    Guest

    Predefinito

    Ciao,
    apri una nuova discussione a riguardo.
    Comunque la funzione mail() è abilitata.

    Ciao!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •