Visualizzazione risultati 1 fino 4 di 4

Discussione: Mail con allegato in php non restituisce Testo HTML

  1. #1
    ciappinaro non è connesso Utente AlterBlog
    Data registrazione
    24-02-2021
    Messaggi
    2

    Predefinito Mail con allegato in php non restituisce Testo HTML

    Ho un problema con l'invio di una mail con allegato, nel senso che vorrei che mi restituisse oltre al file allegato anche del testo in html e invece arriva con del testo puro dove si vedono i tag html.
    Questo è il codice in questione.

    Codice PHP:
    <?php

    // Recupero il valore dei campi del form

    $destinatario = 'nome@dominio.it';

    $nome = $_POST['nome'];

    $email = $_POST['email'];

    $cap = $_POST['cap'];

    $testo = $_POST['testo'];



    // Valorizzo le variabili relative all'allegato

    $allegato = $_FILES['allegato']['tmp_name'];

    $allegato_type = $_FILES['allegato']['type'];

    $allegato_name = $_FILES['allegato']['name'];

    $oggetto .= "Richiesta lavoro da sito ciappinaro";

    // Creo altre due variabili ad uno interno

    $headers = "From: " . $oggetto;

    $msg = "";



    // Verifico se il file è stato caricato correttamente via HTTP

    // In caso affermativo proseguo nel lavoro...

    if (is_uploaded_file($allegato))

    {

    // Apro e leggo il file allegato

    $file = fopen($allegato,'rb');

    $data = fread($file, filesize($allegato));

    fclose($file);



    // Adatto il file al formato MIME base64 usando base64_encode

    $data = chunk_split(base64_encode($data));



    // Genero il "separatore"

    // Serve per dividere, appunto, le varie parti del messaggio.

    // Nel nostro caso separerà la parte testuale dall'allegato

    $semi_rand = md5(time());

    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

    // Aggiungo le intestazioni necessarie per l'allegato

    $headers .= "\nMIME-Version: 1.0\n";

    $headers .= "Content-Type: multipart/mixed;\n";

    $headers .= " boundary="{$mime_boundary}"";



    // Definisco il tipo di messaggio (MIME/multi-part)

    $msg .= "This is a multi-part message in MIME format.\n\n";



    // Metto il separatore

    $msg .= "--{$mime_boundary}\n";



    // Questa è la parte "testuale" del messaggio

    $msg .= "MIME-Version: 1.0\r\n";
    $msg .= "Content-Type: text/html; charset=utf-8\r\n";
    $msg .= "Content-Transfer-Encoding: 7bit\n\n";
    $msg .= "<h2>Email: <a href='mailto:" . $email . "'>" . $email . "</a></h2>
    <h2>Quartiere: <a href='www.google.it/maps/place/"
    . $cap . "'>Vedi sulla mappa</a></h2>
    <h2>Messaggio: "
    . $testo . "</h2>";



    // Metto il separatore

    $msg .= "--{$mime_boundary}\n";

    // Aggiungo l'allegato al messaggio

    $msg .= "Content-Disposition: attachment; filename="{$allegato_name}"\n";

    $msg .= "Content-Transfer-Encoding: base64\n\n";

    $msg .= $data . "\n\n";

    // chiudo con il separatore

    $msg .= "--{$mime_boundary}--\n";

    }

    // se non è stato caricato alcun file

    // preparo un semplice messaggio testuale

    else

    {

    $msg .= "MIME-Version: 1.0\r\n";
    $msg .= "Content-Type: text/html; charset=utf-8\r\n";
    $msg .= "<h2>Email: <a href='mailto:" . $email . "'>" . $email . "</a></h2>
    <h2>Quartiere: <a href='www.google.it/maps/place/"
    . $cap . "'>Vedi sulla mappa</a></h2>
    <h2>Messaggio: "
    . $testo . "</h2>";
    }

    // Invio la mail

    if (mail($destinatario, $nome, $msg, $headers))

    {
    echo
    '<script type="text/javascript">
    alert("MESSAGGIO INVIARO CON SUCCESSO")
    </script>'
    ;

    }else{
    echo
    '<script type="text/javascript">
    alert("ERRORE: MESSAGGIO NON INVIATO")
    </script>'
    ;
    }
    ?>
    Ultima modifica di alemoppo : 29-03-2021 alle ore 22.31.29 Motivo: [code] -> [PHP]

  2. #2
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    La prossima volta che posti del codice racchiudilo tra tag [ code ].

    In ogni caso, il contne-type text/html devi mettero nell'header della mail, no nel messaggio, dai un'occhiata qui:

    https://www.html.it/articoli/e-mail-...-html-con-php/

    Sevenjeak
    Software developer and much more

  3. #3
    ciappinaro non è connesso Utente AlterBlog
    Data registrazione
    24-02-2021
    Messaggi
    2

    Predefinito

    Ciao Alterguru, Scusa non sapevo dei tag [code], adesso ho messo a posto. Comunque avevo gia provato ad inserire il conten-tipe nell'header della mail, come dici tu ma non cambia niente, oltre a non formattarmi il testo in html mi restituisce l'immagine allegata in formato testuale. ho anche dato un occhiata al link che mi hai postato, ma il php dell'esempio non mi risolve il problema.

  4. #4
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Scusa ma non riesco a vedere nessun altro errore nel codice.

    P.S.:tempo fa, ora che ci penso, pure a me una mail html mi la rilevava in formato testuale, ho risolto mettendo oltre al Mime-tipe più informazioni, ora purtroppo non ricordo di preciso quale siano.
    Ultima modifica di sevenjeak : 30-03-2021 alle ore 18.51.56

    Sevenjeak
    Software developer and much more

Tags for this Thread

Regole di scrittura

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