PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 24-08-2010 07:37:05

chrossat
Membre
Inscription : 16-08-2010
Messages : 7

Problème d'accents sur le header d'un email avec la fonction mail()

Bonjour,

J'ai repris et adapté un formulaire qui permet l'envoi de pièces jointes. A la réception, nous avons ceci:

Confirmation de votre commande
Boulangerie Pâtisserie Bessa [webmaster@boulangeriepatisseriebessa.ch]

Le â ne passe paset devient â.

Le code de la ligne est:

//=====Création du header de l'e-mail
$header = "From: \"Boulangerie Pâtisserie Bessa\"<webmaster@boulangeriepatisseriebessa.ch>".$passage_ligne;
$header.= "Reply-to: \"Boulangerie Pâtisserie Bessa\" <webmaster@boulangeriepatisseriebessa.ch>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;

Quelqu'un peut-il me dire quoi faire?

Salutations
C. Rossat

Hors ligne

#2 24-08-2010 08:15:47

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Problème d'accents sur le header d'un email avec la fonction mail()

Il te faut ajouter l'encodage :

$header .= 'Content-type: multipart/mixed; charset=iso-8859-1' . "\r\n";

Dernière modification par xTG (24-08-2010 08:16:56)

Hors ligne

#3 24-08-2010 09:30:46

chrossat
Membre
Inscription : 16-08-2010
Messages : 7

Re : Problème d'accents sur le header d'un email avec la fonction mail()

Bonjour,

Merci pour votre réponse, mais maintenant l'email n'est pas généré correctement sous Outlook.

Le code que j'ai mis est:

$header.= "Content-Type: multipart/mixed; charset=\"iso-8859-1\"".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;

Je reçois ceci:

Confirmation de votre commande
Boulangerie Pâtisserie Bessa [webmaster@boulangeriepatisseriebessa.ch]

-------=59c2bc360c3ef3ba2ff934e56d16bbaa
Content-Type: multipart/alternative;
boundary="-----=6281fc52e26ec15a40ac13ba7159c254"

-------=6281fc52e26ec15a40ac13ba7159c254
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit



-------=6281fc52e26ec15a40ac13ba7159c254
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit

<html><head></head><body><b>Récapitulatif de votre commande</b><br/><br/> <table width="600" border="0" cellpadding="1" cellspacing="0" style="width: 600px;">
                                        <tbody>
                                            <tr>
                                                <td width="160" style="text-align: justify;">

                                                    Distribution</td>
                                                <td width="240" style="text-align: justify;">
                                                    asd </td>
                                            </tr>
                                            <tr>
                                                <td style="text-align: justify;">
                                                    Jour / Date</td>

                                                <td style="text-align: justify;">
                                                     / </td>
                                            </tr>
                                            <tr>
                                                <td style="text-align: justify;">
                                                    Kg</td>
                                                <td style="text-align: justify;">

                                                    </td>
                                            </tr>
                                            <tr>
                                                <td style="text-align: justify;">
                                                    Format</td>
                                                <td style="text-align: justify;">
                                                    </td>

                                            </tr>
                                            <tr>
                                                <td style="text-align: justify;">
                                                    Saveur</td>
                                                <td style="text-align: justify;">
                                                    </td>
                                            </tr>

                                            <tr>
                                                <td style="text-align: justify;">
                                                    Type d'événement</td>
                                                <td style="text-align: justify;">
                                                    </td>
                                            </tr>
                                            <tr>

                                                <td style="text-align: justify;">
                                                    Age</td>
                                                <td style="text-align: justify;">
                                                    </td>
                                            </tr>
                                            <tr>
                                                <td style="text-align: justify;">
                                                    Prénom *</td>

                                                <td style="text-align: justify;">
                                                    asd</td>
                                            </tr>
                                            <tr>
                                                <td style="text-align: justify;">
                                                    Nom *</td>
                                                <td style="text-align: justify;">
                                                    asd</td>

                                            </tr>
                                            <tr>
                                                <td style="text-align: justify;">
                                                    Adresse *</td>
                                                <td style="text-align: justify;">
                                                    asd</td>
                                            </tr>
                                            <tr>

                                                <td style="text-align: justify;">
                                                    NPA / Ville *</td>
                                                <td style="text-align: justify;">
                                                    asd / asd</td>
                                            </tr>
                                            <tr>
                                                <td style="text-align: justify;">

                                                    Email *</td>
                                                <td style="text-align: justify;">
                                                    c.rossat@gmail.com</td>
                                            </tr>
                                            <tr>
                                                <td style="text-align: justify;">
                                                    Téléphone *</td>

                                                <td style="text-align: justify;">
                                                    asd</td>
                                            </tr>
                                            <tr>
                                                <td style="vertical-align:top">
                                                    Commentaires * </td>
                                                <td style="text-align: justify;">
                                                    asd</td>

                                            </tr>

                                        </tbody>
                                    </table>
</body></html>

-------=6281fc52e26ec15a40ac13ba7159c254--

-------=59c2bc360c3ef3ba2ff934e56d16bbaa
Content-Type: ; name=""
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=""





-------=59c2bc360c3ef3ba2ff934e56d16bbaa--

-------

Salutations
C. Rossat

Hors ligne

#4 24-08-2010 09:36:27

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : Problème d'accents sur le header d'un email avec la fonction mail()

salut,

quel est le code complet de l'envoie du mail ?

juste la partie mail pas besoin des moults requêtes avant wink


@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

#5 24-08-2010 10:05:20

chrossat
Membre
Inscription : 16-08-2010
Messages : 7

Re : Problème d'accents sur le header d'un email avec la fonction mail()

Hello,

Voici un bout du code qui fonctionnait bien au niveau de l'envoi avant que l'on ajoute le charset dans le content-type:


<?php
//=====Définition du sujet
$sujet = "Commande sur votre site";
$sujet1 = "Confirmation de votre commande";
//=========
 
//=====Création du header de l'e-mail
$header = "From: \"Boulangerie Pâtisserie Bessa\"<webmaster@boulangeriepatisseriebessa.ch>".$passage_ligne;
$header.= "Reply-to: \"Boulangerie Pâtisserie Bessa\" <webmaster@boulangeriepatisseriebessa.ch>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed; charset=\"iso-8859-1\"".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
 
//=====Création du message
$message = $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
//=====Ajout du message au format texte
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
//==========
 
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
 
//=====Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
 
//=====On ferme la boundary alternative
$message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
//==========
 
 
 
$message.= $passage_ligne."--".$boundary.$passage_ligne;
 
//=====Ajout de la pièce jointe
$message.= "Content-Type: $type_file; name=\"$fichier\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"$fichier\"".$passage_ligne;
$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========
//=====Envoi de l'e-mail
mail("test@test.ch",$sujet,$message,$header);
mail($mail,$sujet1,$message,$header);
?>

Hors ligne

#6 24-08-2010 10:05:56

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Problème d'accents sur le header d'un email avec la fonction mail()

Tu n'aurais pas rajouté ma ligne au lieu de remplacer ce qu'il manquait ?

Edit : bah voilà dans le mile que j'ai raison. ^^'
Tu as défini deux content type différent...

Edit2 : au temps pour moi, j'avais pas lu que c'était le contenu du mail...

Dernière modification par xTG (24-08-2010 12:19:42)

Hors ligne

#7 24-08-2010 10:30:05

chrossat
Membre
Inscription : 16-08-2010
Messages : 7

Re : Problème d'accents sur le header d'un email avec la fonction mail()

Salut,

ça n'est pas ça. Quand on ajoute le charset=\"ISO-8859-1\" pour la variable header, le problème apparaît. Nous avons re-testé, en ôtant le charset, l'email est correct. Seul le problème d'accent subsiste.

Salutations
C. Rossat

Hors ligne

#8 24-08-2010 12:33:11

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : Problème d'accents sur le header d'un email avec la fonction mail()

mauvais charset ? sisi y a que sa.

par exemple ton site est en utf-8 et windows ne lit que iso etc

si c'est bien le cas utf_8_encode / utf_8_decode sont tes amies smile

dans les derniers essai y a t'il qu'une seule définition du content-type ? (j'en vois 5 dans le code).

A tu essayé les 4ème exemple de la doc de la fonction mail ?

Doc php a écrit :

<?php
     // Plusieurs destinataires
     $to  = 'aidan@example.com' . ', '; // notez la virgule
     $to .= 'wez@example.com';

     // Sujet
     $subject = 'Calendrier des anniversaires pour Août';

     // message
     $message = '
     <html>
      <head>
       <title>Calendrier des anniversaires pour Août</title>
      </head>
      <body>
       <p>Voici les anniversaires à venir au mois d\'Août !</p>
       <table>
        <tr>
         <th>Personne</th><th>Jour</th><th>Mois</th><th>Année</th>
        </tr>
        <tr>
         <td>Josiane</td><td>3</td><td>Août</td><td>1970</td>
        </tr>
        <tr>
         <td>Emma</td><td>26</td><td>Août</td><td>1973</td>
        </tr>
       </table>
      </body>
     </html>
     '
;

     // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
     $headers  = 'MIME-Version: 1.0' . "\r\n";
     $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

     // En-têtes additionnels
     $headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
     $headers .= 'From: Anniversaire <anniversaire@example.com>' . "\r\n";
     $headers .= 'Cc: anniversaire_archive@example.com' . "\r\n";
     $headers .= 'Bcc: anniversaire_verif@example.com' . "\r\n";

     // Envoi
     mail($to, $subject, $message, $headers);
?>
 

si cet exemple simple utilisé dans un fichier a part fonctionne il n'y pas de raison (autre que celle citée) pour que cela ne fonctionne pas !

@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

#9 30-08-2010 08:50:29

chrossat
Membre
Inscription : 16-08-2010
Messages : 7

Re : Problème d'accents sur le header d'un email avec la fonction mail()

Bonjour,

Après avoir essayé plusieurs scénarios infructueux, j'ai trouvé sur Wikipedia (article sur MIME) que si l'on a un message à plusieurs parties, il est normal d'avoir plusieurs "Content-type", donc plusieurs "Charset".
Dès qu'un "Charset" est dans la partie "Header", le mail n'est pas envoyé correctement. Si on l'ôte, ça fonctionne sauf le problème des accents qui sont mal interprétés. Comment faire pour terminer ce formulaire?

Salutations
C. Rossat

Hors ligne

Pied de page des forums