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

    Inviare mail in formato html

    Salve.
    Ho creato una pagina in php che chiamerò pag1, all'interno vi è una form con una textarea ed il solito bottone che, una volta premuto, mi chiama una seconda pagina in php che chiamerò pag2.
    Quest'ultima pagina (pag2) si occuperà di recuperare i dati dalla textarea della pagina pag1 ed inviarli tramite mail ad un indirizzo specifico tramite il seguente codice:
    if (mail($destinatario, $oggetto, $messaggio, $headers))
    {
    $errore = 0;
    }
    ovviamente il codice continua.
    La mia domanda è la seguente.
    Ho la necessità di inviare testo in formato HTML come il seguente codice:
    ...sito cliccando su <a href =" & Chr(34) & sitointernet & "/sitoitaliano/curetermali.php>" & Chr(34) & "prenota</a>, provvederemo....

    questo è un testo con un link ma, purtroppo, in casella elettronica mi arriva esattamente il testo che ho scritto.

    Mi potete dire come devo gestire la situazione?
    Grazie mille.
    Mariastella

  2. #2
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  3. #3

    Niente ancora

    Innanzitutto ti ringrazio per la documentazione che mi hai segnalato.
    Per me è stata un po difficile la comprensione poichè sono alle prime armi, però alcune cose mi serviranno in futuro come il modo di allegare file alle mail.
    Ho trovato un esempio su un'altro sito abbastanza famoso ma non funziona.
    Posto la parte di codice, se qualcuno mi sà dire se ho fatto un errore facilmente correggibile oppure ho sbagliato interamente il codice, forse per l'esembio sbagliato che ho trovato.
    $mittente = $_POST['mittente'];
    $destinatario = $_POST['destinatario'];
    $oggetto = $_POST['oggetto'];
    $confermalettura = $_POST['confermalettura'];
    //$messaggio = $_POST['messaggio'];
    if ($confermalettura=="true")
    {
    $risposta = "Disposition-Notification-To: $emailassistenza";
    }
    else
    {
    $risposta = "";
    }
    $headers = "From: $mittente\n";
    $headers .= "$risposta\n";
    $headers .= "Bcc: mail@dominio.it\n";
    $headers .= "MIME-Version: 1.0\n";
    $headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
    $headers .= "Content-Transfer-Encoding: 7bit\n\n";
    $messaggio = "<html><body>

    Questo messaggio è in formato html</p>

    Visita il sito <a href=\"http://www.html.it\">www.html.it</a></p></body></html>";
    if (mail($destinatario, $oggetto, $messaggio, $headers))
    {
    $errore = 0;
    }
    else
    {
    $errore = 1;
    }


    Grazie.
    Ms

  4. #4
    Ciao,
    purtroppo oggi non avrò molto tempo comunque a occhio vedo alcune cose che non mi convincono e su cui potresti fare qualche prova:

    - i "\n" credo che non funzionino in ambiente windows (anche se il server è apache) e inoltre quel doppio "\n" finale potrebbe dar noia. Se il server è windows prova a sostituire i "\n" con "\r\n" e, in ogni caso, togli il doppione.

    - gli header mi sembrano un po' disordinati e anche quel Disposition-Notification-To non l'avevo mai visto comunque fare una prova riordinandoli e semplificandoli un po' non costa molto, prova così:

    codice:
    $headers = "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";
    $headers .= "Content-Transfer-Encoding: 7bit\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "From: $mittente\r\n"; 
    $headers .= "Bcc: mail@dominio.it\r\n";
    Sono solo tentativi, non so se funzioneranno ma in questo momento non posso fare di più.

    Facci sapere
    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  5. #5
    Ciao,
    sono riuscito a recuperare un pezzo di codice che ho usato tempo fa :

    codice:
       $destinatari   = "aaa@bbb.it <aaa@bbb.it>";
    
       $intestazioni  = "From: ccc@ddd.it <ccc@ddd.it>\r\n";
       $intestazioni .= "Reply-To: eee@fff.it <eee@fff.it>\r\n";
       $intestazioni .= "Bcc: ggg@hhh.it <ggg@hhh.it>, iii@jjj.it <iii@jjj.it>\r\n";
    
       $oggetto = "Richiesta di informazioni";
    
       $messaggio = "Nome: " . $nome . "\r\nE-mail: " . $e_mail . "\r\nMessaggio: " . $testo;
    
       if (apache_getenv("SERVER_ADDR") <> "127.0.0.1") {
          if (!mail($destinatari, $oggetto, $messaggio, $intestazioni)) {
             header("Location: errore_spedizione.php");
          } else {
             header("Location: conferma_spedizione.php");
          };
       } else {
          header("Location: conferma_spedizione_locale.php");
       };
    in realtà non è quello che serve a te perché in quel caso inviavo mail di solo testo, era solo per farti vedere la sintassi con gli indirizzi ripetuti fra < e >, tanto per fare una prova in più.

    E ora che ci ripenso mi ricordo che era molto importante che non ci fossero ritorni a capo (cioè i \r\n) in nessun campo tranne che nelle intestazioni, dove deve essercene uno per ogni elemento e uno conclusivo, e nel corpo del messaggio ovviamente (però nel tuo caso i ritorni a capo nel corpo del messaggio li farai con
    ).

    Non mi viene in mente altro.
    Ciao


    EDIT: comunque riguardando il tutto ora i tuoi header iniziali non mi sembrano più tanto disordinati, perché i primi forniscono le informazioni su destinatari e mittente e poi c'è il MIME e gli altri che danno informazioni sul messaggio vero e proprio. Quindi probabilmente vanno bene così e la cosa importante si rivelerà la sostituzione dei \n con \r\n.
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  6. #6

    Okkkk!

    Mi dispiace di avermi presa tutto questo tempo, è che ultimamente sono stata un po impegnata con il lavoro.
    Il codice che mi hai mandato tempo fa funziona benissimo, adesso me lo adatto alle mie necessità.
    Quel Disposition-Notification-To che ho inserito serve a richiedere la conferma di lettura quando l'e_mail viene letta dal destinatario, funzionava benissimo per cui collaudata.
    Adesso, per chiedere la conferma di lettura, non so se rimettere la mia istruzione o quella che hai scritto tu ossia $intestazioni .= "Reply-To: eee@fff.it <eee@fff.it>\r\n";
    che dovrebbe essere la stessa cosa anche se non la conosco.
    In ogni modo la mia domanda è: gli header erano disordinati poiche non sapevo che esistesse un ordine, dove posso trovare informazioni per capire in che ordine vanno messi questi header?
    In ogni modo ti ringrazio per le informazioni che mi hai mandato.
    Ciao.
    Ms.

  7. #7

    RISOLTO

    Ho risolto. grazie mille per le informazioni ricevute.
    Ciao
    Ms.

  8. #8
    Ah , bene, sono contento se hai risolto ma facci sapere come.
    Qual era il problema?

    Comunque, giusto per spiegarmi bene, non so se gli header vanno messi in un determinato ordine, era solo una mia impressione che poi però ho rivisto, probabilmente è giusto l'ordine in cui li hai messi tu.

    Riguardo al disposition-notification-to, semplicemente non lo conoscevo ma non è equivalente al reply-to perché il reply-to serve a fare in modo che il browser sappia che indirizzo impostare nel campo "TO" nel caso si clicchi su "rispondi".
    Le due cose quindi possono tranquillamente coesistere.

    La mia esperienza, per altro non molto ricca, mi dice che conviene mettere tutte le intestazioni possibili perché così si diminuisce il rischio che le mail vengano considerate spam da alcuni grandi provider di posta, come libero e gmail.

    Se ti può interessare qui c'è il protocollo SMTP cioè l'insieme di regole a cui attenersi per l'invio di mail, però si tratta di un documento piuttosto noioso e lungo, in inglese e con una miriade di rimandi a documenti vecchi e a nuovi aggiornamenti fra cui districarsi. Però abbinato all'altra documentazione che ti avevo segnalato permette di farsi un quadro completo.

    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  9. #9
    Ho risolto con il classico metodo dei tentativi e devo dire che sono stata anche fortunata da riuscirci al primo colpo.
    Questo è il codice:

    if ($confermalettura=="true") //se il checkbok è true allora chiedi conferma lettura altrimenti no
    {
    $risposta = "Disposition-Notification-To: $emailassistenza";
    }
    else
    {
    $risposta = "";
    }
    $headers = "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";
    $headers .= "Content-Transfer-Encoding: 7bit\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "From: $mittente\r\n";
    $headers .= "$risposta\r\n";
    //$headers .= "Bcc: assistenza@XXXXXXXX.it\r\n";
    //$messaggio = "<html><body>

    Questo messaggio è in formato html</p>

    Visita il sito <a href=\"http://www.html.it\">www.html.it</a></p></body></html>";
    if (mail($destinatario, $oggetto, $messaggio, $headers))
    {
    $errore = 0;
    }
    else
    {
    $errore = 1;
    }

    Gli "\r\n" li conoscevo già, avevo fatto anche dei tentativi ma senza risultato, incomincio a pensare che l'ordine degli headers sia importante ma da profana non ne sono sicura.
    Il Disposition-Notification-To: $emailassistenza funziona benissimo, mi arriva la conferma di lettura senza problemi.
    Ho disabilitato alcune parti del codice per adattare la situazione al mio caso ma l'ho comunque lasciata per mostrarla a qualcuno interessato.
    Ciao e grazie ancora.
    Ms.

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.