Version complète: sur le forum Webmaster Hub : Problème d'envoi (fonction mail() ) en copie cachée
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Gros N@z
Bonjour,

J'ai besoin de votre aide car j'ai un petit problème pour envoyer un mail en copie cachée. En fait quand j'envoi du simple texte ça marche sans problème mais quand j'associe mon design avec le css j'ai tout sous forme de texte comme ci dessous.

X-Server-Name: www.blablabla.com
X-Script-Name: /newsletter/mail.php
X-Remote-Addr: 90.xx.xx.xxx
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>
....

Voici mon code :

CODE
<?
    $nl_sujet = $_POST['aaa_mail_sujet'];
    $nl_corps = $_POST['aaa_mail_corps'];
    $nl_de = $_POST['aaa_mail_de'];
    $nl_to = $_POST['aaa_mail_to'];
    //$nl_to_cci = $_POST['aaa_mail_to_cci'];
    $nl_post = $_POST['aaa_mail_post'];
    $nl_type = $_POST['aaa_mail_type'];

    If ($nl_post=='ok')
    {
        
        // Préparation des données.
        $sujet = stripslashes($nl_sujet);
        $corps = stripslashes($nl_corps);
        $entete = 'From:'.$nl_de."\r\n";
        $entete .= 'Reply-To:'.$nl_de."\r\n";
        //$entete .= 'Bcc:'.$nl_to_cci."\r\n";
        $entete .= 'Content-Type: text/html; charset="iso-8859-1"'."\r\n";
        $entete .= "\n";

        $corps_final = "CONTENU DU MAIL...";
        
        mail($nl_to, $sujet, $corps_final, $entete);
        
        echo '<p><b>Mail envoyé avec succès.</b></p>';
    }
    else
    {
        echo '<p><b>Le mail n\'a pas pu être envoyé.</b></p>';
    }
?>


Merci de me filer un coup de main car je désespère sick.gif
mjouan
Salut

Pour du HTML il vaut mieux utiliser une encapsulation MIME.
Tu commences par définir une variable de frontière MIME:
CODE
$frontiere = '-----=' . md5(uniqid(mt_rand()));


Dans la définition de ton entête remplacer :
CODE
$entete .= 'Content-Type: text/html; charset="iso-8859-1"'."\r\n";

par :

CODE
$entete .= 'MIME-Version: 1.0'."\n";
$entete .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"';


Il te faudra avoir la version Texte de ton message dans la variable : $message_texte
et la version HTML du message dans la variable: $message_html

Par exemple:
CODE
$message_texte="Texte";
$message_html="<HTML><BODY><b>Texte</b></BODY></HTML>";



Puis tu ajoutes le code suivant à la place de ta chaine $corps_final.

CODE
//MESSAGE TEXTE
$corps_final= 'This is a multi-part message in MIME format.'."\n\n";
$corps_final.= '--'.$frontiere."\n";
$corps_final.= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";
$corps_final.= 'Content-Transfer-Encoding: 8bit'."\n\n";
$corps_final.= $message_texte."\n\n";

//MESSAGE HTML
$corps_final.= '--'.$frontiere."\n";
$corps_final.= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
$corps_final.= 'Content-Transfer-Encoding: 8bit'."\n\n";
$corps_final .= $message_html."\n\n";



Marc
Gros N@z
merci marc, je vais regarder ça smile.gif

Mais est-tu sûr que cela va rêgler mon problème de copie cachée ?

Julien
mjouan
CITATION(Gros N_AT_z @ mercredi 9 juillet 2008 à 21:56) *
Mais est-tu sûr que cela va rêgler mon problème de copie cachée ?


Le format n'étant pas reconnu, il traite comme il peut.
D'ou l'affichage de tout le texte.

Marc
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.