IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Caractères parasites dans une newsletter générée


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Points : 146
    Points
    146
    Par défaut Caractères parasites dans une newsletter générée
    Bonjour, je me tourne vers vous pour résoudre un problème dont je ne trouve pas la solution. J'ai fais en php un système de newsletter, qui est envoyé à plusieurs destinataires. J'ai d'un côté le fichier newsletter.php qui crée le gabarit et que j'insère via le tampon, et de l'autre une page qui envoie la newsletter.

    Le problème que je rencontre est que, lors de l'envoi, il y a des caractères parasites qui se rajoutent dans le chemin d'accès aux images. Sachant :
    1. en local avec Wamp il n'y a pas de problème, mais sur le serveur en Linux oui
    2. les images sont insérées dans le fichier via une boucle en fonction d'une valeur en base de données, mais le caractère se trouve uniquement sur une seule ligne à chaque fois, ce qui n'est pas logique !

    Voici comment j'insère les images sur le fichier newsletter.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    for ($th=0; $th<12; $th++) {
    	switch ($th) {						  
    	   case 0: $theme = 'Image1'; break;
    	   case 1: $theme = 'Image2'; break;
    	   case 2: $theme = 'Image3'; break;
    	   case 3: $theme = 'Image4'; break;
    	   case 4: $theme = 'Image5'; break;
    	   case 5: $theme = 'Image6'; break;
    	   case 6: $theme = 'Image7'; break;
    	   case 7: $theme = 'Image8'; break;
    	   case 8: $theme = 'Image9'; break;
    	   case 9: $theme = 'Image10'; break;
    	   case 10: $theme = 'Image11'; break;
    	   case 11: $theme = 'Image12'; break;
    	}
    if (substr($varLettre['thematique'], $th, 1)==1) { ?><?php echo $theme; ?>&nbsp;<img src="<?php echo 'http://www.monsite/img/liq/th'.$th.'.jpg'; ?>" width="10px" height="10px" align="absmiddle" border="0" /><br /><?php }
    } ?>
    Et l'envoi se passe de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    foreach ($varTab as $users) {					
    	$titre = "Newsletter n°".$varNumero;
    	$from = "From: MOI<newsletter@monsite.fr>\n";
    	$from .= "Mime-Version: 1.0\nContent-Type: text/html; charset=ISO-8859-1\n";
     
    	ob_start();
    	include 'newsletter.php';
    	$contenu = ob_get_clean();
     
    	$contenu = str_replace('[NOM]', $users[1], $contenu);
    	$contenu = str_replace('[MAIL]', $users[0], $contenu);
     
    	echo $contenu;
     
    	if (mail($users[0], $titre, $contenu, $from)) {
    		echo "<li style='list-style-type:square;list-style-position:inside;'>Mail envoyé avec succés à ".$users[1]." (".$users[0].")</li>";
    	} else {
    		echo "<li style='list-style-type:square;list-style-position:inside;'>Erreur d'envoi pour ".$users[1]." (".$users[0].")</li>";
    	}
    	ob_end_flush();
    } ?>
    Je me retrouve donc avec un mail qui contient disons 5 liens vers des images, avec l'url http://www.monsite/img/liq/th0.jpg à http://www.monsite/img/liq/th5.jpg, et dans le lot, il y en a toujours une qui contient ou un %20 ou un + dans l'url.

    Une idée d'où vient le problème ? Merci d'avance

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    %20 correspond au caractère espace. De la même manière que dans une URL, l'espace est remplacé par un +.
    Tu dois donc avoir une URL pour tes images qui contient un espace...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Points : 146
    Points
    146
    Par défaut
    Ce que j'ai pensé, mais je suis sûr que non, après avoir vérifié dix fois.
    De plus, l'url est insérée par la boucle et est toujours la même, il n'y a que le nom du fichier image qui change. Donc je devrais avoir x fois le même caractère si c'était dû à ça, alors que ça n'arrive qu'une seule fois.
    Et jamais au même endroit de la chaine, par ex j'ai observé une fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    http://www.monsite/img/liq/th0.jpg
    http://www.monsite/img/liq/th1.jpg
    http://www.monsite/img/liq/t%20h2.jpg
    http://www.monsite/img/liq/th3.jpg
    une fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    http://www.monsite/img/liq/th0.jpg
    http://www.monsite/img/liq/th1.jpg
    http://www.monsite/img/liq/th2.jpg
    http://www.mo+nsite/img/liq/th3.jpg
    etc...

  4. #4
    Membre émérite Avatar de HiRoN
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 035
    Points : 2 589
    Points
    2 589
    Par défaut
    Bonjour,

    Je me permets de répondre à vieille discussion car j'ai été confronté au même problème (aujourd'hui) et j'ai trouvé la solution...

    Le serveur mail génère automatiquement au bout d'environ 200 caractères un "espace" (%20) un peu n'importe ou.

    La solution consiste a forcer un retour à la ligne manuellement dans le code (\r\n) afin de ne pas être confronté à ce problème !

Discussions similaires

  1. [AC-2007] Eliminer les caractères parasites dans une colonne NOM_Prénom
    Par ARFAOUI1953 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 09/04/2013, 19h33
  2. caractère parasite dans l'url après une méthode get
    Par michelg77 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 31/01/2012, 00h44
  3. Réponses: 2
    Dernier message: 15/10/2005, 23h29
  4. [SQL7] chaines de caractères stockées dans une colonne image
    Par fredoche dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/11/2004, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo