caractères étrangés phpMailer

Petit nouveau ! | 5 Messages

05 oct. 2011, 16:32

Bonjour à toute la communauté!

Je viens demander aide et conseil sur un problème qui me bloque depuis un moment.

J'ai réalisé un formulaire qui a pour but d'envoyer des emails au format html avec la librairie phpMailer.
Tout marche très bien sauf sur un point, les utilisateurs peuvent être un peu partout dans le monde et entrer leurs messages en chinois, russe ....
J'ai donc testé, le contenu du mail s'affiche bien correctement mais jamais l'objet du mail.

J'obtiens par exemple pour un objet de mail en chinois:
简报 au lieu de 简报

J'ai cherché dans plein de directions charset, encodage, decodage de la chaine .... :( sans succès

Voici l'extrait de code du fichier d'envoi en question


		$mail = new PHPmailer();					
						$mail->IsHTML(true);
						$mail->From=$mail_expediteur;
						$mail->FromName=$mail_expediteur;
						$mail->AddBCC($mail_destinataire); 
						$mail->AddReplyTo($mail_expediteur);
						$mail->AddEmbeddedImage("../../images/$image", "my-attach", "../../images/$image");
						$mail->Subject = $objet;
							
						$tailleImage=getimagesize("../../images/$image");
						$largeur=$tailleImage[0];
						$hauteur=$tailleImage[1];
							
						$message="<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">";

						$message.="<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
	
						$message.="<body bgcolor=\"#$couleur_fd\"><center><br/><br/>";
				
				
		
						$message.="</font></center></body></html>";	
						
						
						
						$mail->MsgHTML($message); 

Avez-vous des suggestions voir des solutions pour que je recentre mes recherches ?
Car la je sèche

Mille mercis par avance

Eléphanteau du PHP | 31 Messages

05 oct. 2011, 23:03

Euh ?

Screen de ce que je voi :
Image

Petit nouveau ! | 5 Messages

06 oct. 2011, 09:55

Mince, c'est en faite la retranscription de 简报 en caractère numériques décimaux.

c'est à dire :
&#31616;&#25253;
Dans un navigateur les caractères sont bien retranscrit ainsi que dans le corp du mail mais pas dans l'objet du mail!
Merci déjà de s'être penché sur mon problème.

Une solution?

ViPHP
xTG
ViPHP | 7331 Messages

06 oct. 2011, 10:11

Cela ne viendrait pas du webmail ou du logiciel de messagerie que tu utilises pour lire tes mails ?
As-tu essayé avec un autre outil ?

Petit nouveau ! | 5 Messages

06 oct. 2011, 10:18

Merci de ta réponse.

Oui j'ai en effet essayer avec plusieurs logiciel mail et webmail => même résultat.
De plus il faut que cela marche avec le plus de client mail possible donc...

Eléphanteau du PHP | 31 Messages

06 oct. 2011, 15:50

Essaye avec :
                $mail = new PHPmailer();                                       
                                                $mail->IsHTML(true);
                                                $mail->From=$mail_expediteur;
                                                $mail->FromName=$mail_expediteur;
                                                $mail->AddBCC($mail_destinataire);
                                                $mail->AddReplyTo($mail_expediteur);
                                                $mail->AddEmbeddedImage("../../images/$image", "my-attach", "../../images/$image");
                                                $mail->Subject = "=?utf-8?B?".base64_encode($objet)."?=";
                                                       
                                                $tailleImage=getimagesize("../../images/$image");
                                                $largeur=$tailleImage[0];
                                                $hauteur=$tailleImage[1];
                                                       
                                                $message="<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">";

                                                $message.="<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
       
                                                $message.="<body bgcolor=\"#$couleur_fd\"><center><br/><br/>";
                               
                               
               
                                                $message.="</font></center></body></html>";    
                                               
                                               
                                               
                                                $mail->MsgHTML($message);
On n'oubliant pas d'encoder la page en UTF8.

ViPHP
ViPHP | 2577 Messages

06 oct. 2011, 16:12

Eventuellement, tu peux regarder du coté de la fonction iconv() : http://www.php.net/manual/fr/function.iconv.php

Edit : la fonction iconv_get_encoding() permet de savoir dans quoi est codé la chaine. Reste le problème du codage à faire.

Petit nouveau ! | 5 Messages

06 oct. 2011, 16:45

Merci beaucoup de ton aide frexios mais malheureusement pas de changement.

Merci, je vais me pencher sur le lien précédent

Eléphanteau du PHP | 31 Messages

06 oct. 2011, 22:54

Tu as bien enregistré ton fichier au format UTF 8 ?

Petit nouveau ! | 5 Messages

07 oct. 2011, 10:01

Oui le fichier est bien enregistré en UTF-8