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

    email html - funziona su outlook no su www.hotmail.com

    ciao ragazzi.

    dopo vari tentativi e tante "parolaccie" sono riuscito ad incastrare tutto il codice php alla perfezione ed a far funzionare l'invio di mail in formato html + allegato opzionale.
    ho avuto qualche difficoltà con "\r\n" perchè non riuscivo a capire dove sbagliavo ma alla fine ci sono riuscito !!! tutto funziona come volevo...

    troppo facile però... infatti su outlook tutto si vede come dovrebbe mentre su pagine web che offrono servizi di posta tipo aruba o hotmail il messagio si vede a malapena o non si vede proprio. su hotmail ad esempio non si vede affatto.

    mi pare di avere letto qualche giorno fa un post che trattava l'argomento ma la discussione è rimasta aperta e priva di conclusione.

    qualcuno sa spiegarmi perchè..??

    infinite grazie. pippo

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    53
    ti consiglio di usare la libreria phpmailer che si occupa di formattare l'email in modo corretto sia text che html,
    allegati e tutto quello che serve.
    Puoi scegliere di usare un smtp o la funzione php per l'invio

  3. #3
    consiglio...
    ho avuto lo stesso problema...
    cerca di ottenere gli stessi risultati voluti, riducendo l'uso della proprietà "style"...
    limitati all'HTML...
    posta il codice... così ti posso dare qualche consiglio!

  4. #4
    il codice è questo...
    con la variabile $body_html che contiene il messaggio formattato come una comune pagina html da <html> a </html> con <style></style> etc...
    su hotmail il problema non è di stile... non si vede proprio!
    mentre su aruba si vede male ma si vede...

    Codice PHP:
    <?
    function send_mail($email,$subject,$body_html,$body_txt,$mittente,$file_path_and_name="",$new_file_name=""){
        
        
    $boundary_1 ="mixed_part_".md5(time());
        
    $boundary_2 ="alternative_part_".md5(time());
        
        
    $headers "From: $mittente\n";
        
    $headers.= "X-Mailer: basula PHP code\n";
        
    $headers.= "MIME-version: 1.0\n";
        
        if (
    $file_path_and_name!=""){
            
    $headers.= "Content-Type: multipart/mixed; boundary=\"$boundary_1\"\n";
            
    $headers.= "\n\r--$boundary_1\n";
        }

        
    $headers.= "Content-Type: multipart/alternative; boundary=\"$boundary_2\"\n";
        
        
    //mail alternativa solo testo
        
    $body "\n\r--$boundary_2\n";
        
    $body.= "Content-Type: text/plain; charset=ISO-8859-15; format=flowed\n";
        
    $body.= "Content-Transfer-Encoding: 7bit\n\n";
        
    $body.= "$body_txt";
        
        
    //mail html
        
    $body.= "\n\r--$boundary_2\n";
        
    $body.= "Content-Type: text/html; charset=ISO-8859-15\n";
        
    $body.= "Content-Transfer-Encoding: 7bit\n\n";
        
    $body.= "$body_html";
        
        
    //fine part alternative
        
    $body .= "\n\r--$boundary_2--\n";
        
        
    //allegato se presente
        
    if ($file_path_and_name != "") {
            
            
    $open_file fopen($file_path_and_name"r");
            
    $data fread($open_filefilesize($file_path_and_name));
            
    $encoded_attach base64_encode($data);
            
    fclose($open_file);
            
            
    $file_name array_pop(explode('/',$file_path_and_name));
            if (
    $new_file_name == ""$new_file_name $file_name;
            
    $file_type mime_content_type($file_path_and_name);
            
            
    $body.= "\n\r--$boundary_1\n";
            
    $body.= "Content-type: $file_type; name=\"$file_name\"\n"
            
    $body.= "Content-Transfer-Encoding: base64\n";
            
    $body.= "Content-Disposition: attachment; filename=\"$new_file_name\"\n\n";    
            
    $body.= "$encoded_attach\n";
            
    $body.= "\n\r--$boundary_1--\n";
        }
        
        if(@
    mail($email,$subject,$body,$headers)) return true; else return false;
    }
    ?>

  5. #5
    premetto di aver fatto le verifiche su hotmail ecc...
    ottenendo buoni risultati...
    e utilizzando un codice meno accurato del tuo...
    guarda:
    [applico il mio metodo al tuo codice...]

    Codice PHP:
    <? 
    function send_mail($email,$subject,$body_html,$body_txt,$mittente,$file_path_and_name="",$new_file_name=""){
      
        
    $headers "MIME-Version: 1.0\n"
        
    $headers.= "Content-type: text/html; charset=iso-8859-1\n"
        
    $headers.= "From: Promemoria Compleanni <compleanni@example.com>\n"
     
         
        
    //allegato se presente 
        
    if ($file_path_and_name != "") { 
             
            
    $open_file fopen($file_path_and_name"r"); 
            
    $data fread($open_filefilesize($file_path_and_name)); 
            
    $encoded_attach base64_encode($data); 
            
    fclose($open_file); 
             
            
    $file_name array_pop(explode('/',$file_path_and_name)); 
            if (
    $new_file_name == ""$new_file_name $file_name
            
    $file_type mime_content_type($file_path_and_name); 
             
            
    $body.= "\n\r--$boundary_1\n"
            
    $body.= "Content-type: $file_type; name=\"$file_name\"\n"
            
    $body.= "Content-Transfer-Encoding: base64\n"
            
    $body.= "Content-Disposition: attachment; filename=\"$new_file_name\"\n\n";     
            
    $body.= "$encoded_attach\n"
            
    $body.= "\n\r--$boundary_1--\n"
        } 
         
        if(@
    mail($email,$subject,$body,$headers)) return true; else return false

    ?>
    Come vedi, non tratto in maniera particolare gli headers...
    ciò su cui dicevo di poterti aiutare, invece, era proprio il testo della mail... la pagina HTML che inviavi insomma... perchè così ti dicevo quali style convertire e come

  6. #6
    ok... intanto diciamo che ho implementato phpmailer e lo sto testando... ma il problema del codice html resta...
    quindi eccolo quà. ovviamente i consigli sono più che graditi. penso che al posto di <h5> etc.. sia più giusto dichiare .stile{} e poi richiamarlo con class="stile"
    ...e questa è una, poi?

    Codice PHP:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <
    html><head>
    <
    title>basula fest newsletters</title>
    <
    meta http-equiv=Content-Type content="text/html; charset=windows-1252">
    <
    style>
    h4 {colorgoldfont-size:'30px'font-familymonospace}
    h5 {colorwhitefont-size:'12px'font-familymonospace}
    h6 {color#24211D; font-size:'3px'; font-family: monospace}
    h7 {colorwhitefont-size:'12px'font-familymonospace}
    </
    style>
    </
    head>
    <
    body bgColor=#0a0b0c link=green alink=gold vlink=red>

    </body></html

  7. #7
    assolutamente no... [se mi permetti]...

    per hotmail, tutto quello che segue il tag BODY, sarà risparmiato... mentre quello che lo precede verrà miseramente troncato...

    non finisce qui...

    gli STYLE che inserirai dopo il tag BODY non saranno ignorati... molti verranno eliminati...

    pensa che sarà ignorata anche la proprietà PADDING delle TABLE...

    devi tornare all'HTML puro... il buon vecchio FONT e compagnia bella...

    questo non ti permetterà di forzare la dimensione del font, ma ti permetterà di respirare...

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.