Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e) (modifié)

bonjour a tous

 

ma newsletter n'affiche pas les caractères spéciaux

 

exemple, si j'y met ceci

& é -- "-- " '

(

§ § § è ! ç à à) --_

*¨$ â ê ù %

/ < > \ € £

<u> souligné </u>

<i> italique </i>

<b> gras </b>

je recois cela

& � -- \"-- \" \'

(

� � � � ! � � �) --_

*�$ � � � %

/ < > \\ � �

soulign

italique

gras

donc des antislach devant les apostrophes, les guillemets et les caractères spéciaux sont remplacé.

voici mon code

 $headers =("From: EAB-Thumaide.be<xxxxxxxxxx@yahoo.fr>.\n");  
	$headers .=("Return-Path: xxxxxxxxx@base.be\r\n");   
	$headers .=("MIME-Version: 1.0 \n");
	$headers .=("Content-type: text/html;charset=iso-8859-1.\n"); // 7 

	$sujet = htmlentities($_POST['sujet']); 
	$message = nl2br($_POST['message']);	 ou ceci   $message = nl2br(stripslashes($_POST["message"]));
	$newsa = htmlentities($_POST['newsa']);

 

et rien n'y fait, ce n'est pas faute d'avoir chercher, mais je suis débutant.

merci d'avance

alain

Modifié par alain488

Posté(e)

Les points d'interrogation dans des losanges démontrent une conversion ISO8858-1[5] vers UTF8 sûrement involontaire. Fais bien attention à ce que toutes les fonctions de traitement de chaînes que tu utilises conservent l'encodage, ou ne s'emmêlent pas les pinceaux quand elles reçoivent de l'UTF8. Comment détectes-tu l'encodage des données reçues ? (visiblement la réponse est "pas du tout" puisque tu utilises directement $_POST[] dans ton extrait de code, mais on ne sait jamais)...

La première étape consiste à t'assurer que ton script reçoit bien les chaînes postées dans l'encodage attendu, les renvoyer ensuite par mail quand on connaît leur encodage sera beaucoup plus simple.

 

Les caractères d'échappement (backslashes) démontrent un problème de gestion des "magic_quotes". Là aussi, fais attention à d'abord tester leur activation et à utiliser les fonctions de traitement de chaînes en évitant les conversions implicites.

 

Je recommande une lecture approfondie des pages du manuel correspondant à htmlentities(), nl2br(), stripslashes() et get_magic_quotes_gpc()

Posté(e)

bonjour Kewlcat

 

merci pour tes réponses, je vais essayé de m'y remettre demain, car ici je m'arrache les cheveux.

j'ai déjà lu beaucoup sur les htmlentities(), nl2br(), stripslashes(), mais le problème c'est de les utilisé correctement et avec la bonne syntaxe.

 

j'ai tellement essayé de choses différentes que je suis complétement perdu.

 

dernier code essayé

$headers ='From: "EAB-Thumaide.be"<XXXXXXX2@yahoo.fr>';
$sujet =$_POST['sujet']; 
$MESSAGE =$_POST['MESSAGE'];
$newsa =$_POST['newsa'];

 

maintenant je tape ceci

§ § è ! ç à à) --_
"   "' '''   ''' 
*¨$ â ê ù %
/ < > \ € £ " ' " '
<u> souligné </u>
<i> italique </i>
<b> gras </b>

et ça donne ceci

<html>
		 <head>
			<title>Lettre d'information</title>
		 </head
		 <body>
		  § § è ! ç à à) --_

\"   \"\' \'\'\'   \'\'\' 
*¨$ â ê ù %
/ < > \\ € £ \" \' \" \'
<u> souligné </u>
<i> italique </i>
<b> gras </b>
		 </body>
		 </html>

 

les balises ne sont même plus interprétée (mais sont visible), sauf les retour a la ligne

 

bien a toi

alain

Posté(e)

Si tu as complètement supprimé les entêtes du mail, y compris celle qui lui indique que le contenu du mail est de type "text/html" il est normal que les balises apparaissent en clair.

 

Est-ce que tu pourrais nous en dire un peu plus sur le contexte de ton code ? (où il est situé, d'où il est appelé, par qui il est exécuté, .....)

 

Si ton code est accessible depuis un navigateur Web, est-ce qu'en affichant le contenu du mail dans une page tu obtiens un résultat satisfaisant ? (au niveau des backslashes ajoutés [ou pas] et des accents modifiés [ou pas])

Posté(e)

bonjour KewlCat

 

le contexte,

j'ai créé un dossier protéger par .htaccess sur mon site (en ligne) contenant :

1) une page "menu" avec les liens vers toutes les autres pages.

2) une page avec formulaire pour gérer ma base de données ( ajout, suppression, etc....) qui se trouve sur un autre serveur, c'est comme cela chez OVH

3) ma newsletter, contenant le formulaire avec

* un menu déroulant pour choisir le groupe destinataire (select)

* un input type="text" pour le sujet

* textarea pour le message

* et le php nécessaire.

 

pour essais, j'ai afficher le mail dans le bas de la page a l'envoie et là c'est tout bon, pas d'antislach , pas de balise, et elle sont interprétées.

par contre dans le mail reçu, mal grés que j'ai remis les headers, les balise ne sont pas interprétées, mes les antislach ont disparu

 

sur le web certain headers ont des ( ) ou des " " d'autres des ' ' ou les trois, des \r\n d'autres pas, c'est quoi la bonne syntaxe ?

j'en suis là

$message = '
		 <html>
		 <head>
			<title>Lettre d\'information</title>
		 </head
		 <body>
		 ' . $_POST['message'] . '
		 </body>
		 </html> ';						   
$headers ='From: "EAB-Thumaide.be"<xxxx@yahoo.fr>'."\r\n";  
$headers .='Return-Path: <xxxx@base.be>'."\r\n";  
$headers .='MIME-Version: 1.0'."\r\n";
$headers .='Content-type: text/html;charset=iso-8859-1'."\r\n"; 

$sujet = nl2br(stripslashes($_POST['sujet']));	
$message = nl2br(stripslashes($_POST["message"]));
$newsa = nl2br(stripslashes($_POST['newsa']));

mail ($donnees['adresse_mail'], $sujet, $message, $headers);

 

et dans mon adresse xxxxx@base.be ça n'interprète pas les balise, mais ça les affiche

dans mon adresse xxxxxxx@yahou.fr les balises sont interprétées et invisible, manque juste le titre, mais ça je m'en fout

 

dans la fonction mail, $headers doit être en premier ou l'ordre des variables n'as pas d'inportance ?

 

encore merci

alain

Posté(e)

Les paramètres passés à la fonction mail() sont très importants, à la fois en nombre, en type, et dans l'ordre dans lequel tu les passes à la fonction (et pas uniquement à cette fonction-là, de manière générale chaque fonction attend certains types de données à certains endroits et si tu inverses tu obtiens des résultats étranges ou des messages d'erreur)

 

sur le web certain headers ont des ( ) ou des " " d'autres des ' ' ou les trois, des \r\n d'autres pas, c'est quoi la bonne syntaxe ?
D'après la page de manuel, les headers à passer à la fonction mail() sont à séparer par des \r\n (sauts de ligne), mais pour ce qui est de la construction de la chaîne de caractères que tu passes à la fonction, tu es libre d'utiliser soit des quotes (apostrophes) soit des guillemets. Je ne sais pas si tu fais bien d'ajouter un saut de ligne à la fin des headers du mail, mais bon...

Fais attention au contenu de ton mail : la balise </head n'est pas fermée.

Justement, à propos du contenu de ton mail vu que c'est du HTML tu n'es pas obligé de respecter l'indentation ni de sauter des lignes. Le code suivant fonctionnera tout aussi bien (mais sera moins lisible) :

$message = '<html><head><title>Lettre d\'information</title></head><body>' . $_POST['message'] . '</body></html> ';

Autre truc à éviter : passer le contenu de ton message à nl2br() puisque, avec tes sauts de ligne à chaque balise / fni de balise, tu vas te retrouver avec des <br /> partout y compris là où ce n'est pas reconnu (et Dieu sait que les outils de lecture de mails sont à cheval sur la qualité du code HTML qu'ils sont capables d'interpréter dans le corps d'un mail.

Tu devrais donc troquer ton "$message = nl2br(stripslashes($_POST["message"]));" qui, par ailleurs, écrase le message en HTML que tu as contruit juste avant (j'avais pas fait gaffe.... ah bin bravo ! Tu m'étonnes que tu ne voyais pas les balises ! ... bref) contre quelque chose comme ceci :

$message = '<html><head><title>Lettre d\'information</title></head><body>' . nl2br(stripslashes($_POST['message'])) . '</body></html> ';

Bon, je vais arrêter là parce que ça fait déjà beaucoup d'erreurs à corriger ;-)

 

Juste comme ça, à quoi sert "newsa" que tu prends grand soin de récupérer mais que tu n'utilises pas ?

Posté(e)

bonjour Kewlcat

 

avec ceci, ça ne marchait pas mieux

$message = '<html><head><title>Lettre d\'information</title></head><body>' . nl2br(stripslashes($_POST['message'])) . '</body></html> ';

par contre ceci a l'air de marcher pas trop mal, je doit encore tester certaines extension mail (Gmail, skynet, hotmail,......)

$message = '
		 <html>
		 <head>
			<title>Lettre d\'information</title>
		 </head>									   //été pas fermée >
		 <body>
		 ' . ($_POST['message']) . '
		 </body>
		 </html> ';						   
	$headers ='From: "EAB-Thumaide.be"<txxxxxxxxxx@yahoo.fr>'."\n";  
	$headers .='Return-Path: <axxxxxxxxxxx@base.be>'."\n";  
	$headers .='MIME-Version: 1.0'."\n";
	$headers .='Content-type: text/html; charset=iso-8859-1'."\n"; 

	$sujet = stripslashes($_POST['sujet']);	
	$message = stripslashes(nl2br($_POST["message"]));  
	$newsa = ($_POST['newsa']);

les "\r" foutaientt la merde

 

"newsa" me permet de n'envoyer la newsletter qu'a un certain groupe de personnes.

Dans ma BDD j'ai assigné une valeur de 0 a 9 pour chaque membre et un "select" dans le formulaire pour choisir.

Comme chaque groupe fait obligatoirement partie du groupe précédent un ">" suffit

ref : 0 == personnes sans adresse email ou ne voulant pas de newsletter

ref : 1 == tous (même si il ne sont pas membre(contact autre club, fédération,......))

ref : 3 == personnes ayant été membres par le passé

ref : 5 == seulement les membres ayant cotisé l'année précédente

ref : 6 == seulement nos membres en régle de cotisation maintenant

ref : 7 == les membres associés (effectifs)

ref ; 8 == comité + invité (alain, daniel, laurent)

ref : 9 == comité

$reponse = mysql_query("SELECT nom,prenom,news,adresse_mail FROM membres WHERE news > '$newsa' ORDER BY nom")

et par ordre alphabétique des "nom" car ensuite j'affiche

"Votre message est envoyé à . . . . . . . . . . . . .béné paul

"Votre message est envoyé à . . . . . . . . . . . . .dupond pierre

"Votre message est envoyé à . . . . . . . . . . . . .tartuf jean

etc

 

Encore un très grand merci, je ne m'en serais jamais sorti sans ton aide.

amitiés

alain

  • Modérateurs
Posté(e)

Bonjour Alain,

 

Si tu considères que ton problème est résolu, n'oublie pas de retourner éditer le premier message de ton sujet, afin d'ajouter la mention [Résolu] dans le titre du topic.

 

@+ :P

Dylav

Posté(e)

Corriger la première affectation de $message ne change rien au fait qu'elle est écrasée par la seconde affectation, cinq instructions plus bas...

Posté(e)

bonjour à tous

 

et encore un grand merci, a ceux qui m'ont aidé et a ceux qui participe a la pérennité de ce site, c'est grâce a vous, si l'on avance, nous les débutants.

 

bien à vous

alain

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...