Se connecter / S'enregistrer
Votre question

Php fonction mail espace en trop ou caracteres en moins

Tags :
  • Easyphp
  • Programmation
Dernière réponse : dans Programmation
16 Février 2010 19:26:02

Bonjour,

disposant d'un serveur sous EasyPhp, j'utilise depuis longtemps la fonction mail de php.

Or dans tous les mails envoyés en format html il manque un, voire plusieurs caractères au corps du message et/ou un ou plusieurs espaces y sont ajoutés aléatoirement.

J'ai essayé plusieurs choses mais c'est à chaque fois le même problème, avec des positions variables dans le corps du message pour les caractères "parasites".

Si quelqu'un pouvait m'expliquer, je lui en serait très reconnaissant, mes recherches dans les forums n'ont rien donné.
Merci.

Autres pages sur : php fonction mail espace caracteres

16 Février 2010 21:26:08

On peut avoir un exemple ?
m
0
l
17 Février 2010 08:34:25

Exemple du message à envoyer :
  1. <font size=3 color="darkblue">Mignonne, allons voir si la rose Qui ce matin avait déclose Sa robe de pourpre au soleil,
  2. A point perdu cette vêprée, Les plis de sa robe pourprée, Et son teint au vôtre pareil.
  3. Las ! Voyez comme en peu d'espace, Mignonne, elle a dessus la place, Las, las ! <font size=3 color="red"><b>Ses beautés laissé choir !</b></font>
  4. Ô vraiment marâtre Nature, Puis qu'une telle fleur ne dure Que du matin jusques au soir !</font>


Résultat dans le corps du message reçu :
Mignonne, allons voir si la rose Qui ce matin avait déclose Sa robe de pourpre au soleil,
A point perdu cette vêprée, Les plis de sa ro be pourprée, Et son teint au vôtre pareil.
Las ! Voyez comme en peu d'espace, Mignonne, elle a dessus la place, Las, las !
Ses beautés laissé choir !
Ô vraiment marâtre Nature, Puis qu'une telle flur ne dure Que du matin jusques au soir !


Les erreurs : espace ajouté entre ro et be et le e de fleur atomisé.
A noter que le pb ne se produit que lorsque $message atteint un certain nombre de caratères (nombre variable que je n'ai pas réussi à définir).

  1. $from = "expediteur@expediteur.net";
  2. $To = "destinataire@destinataire.net";
  3.  
  4. # En-têtes du message
  5. $headers = "From: Ecole Doctorale Biologie Sante <$from>\n";
  6. $headers .= 'MIME-Version: 1.0' . "\r\n";
  7.  
  8. # Message en HTML
  9. $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
  10. $message = str_replace(chr(10),"<br>",$message);
  11. $Subject = str_replace(chr(10),"<br>",$Subject );
  12.  
  13. # les variables message et Subject sont récupérées à partir d'une BD mySql. Si on les affiche, elles ne sont pas altérées. Les problèmes de caractère(s) shuntés ou d'espace(s) ajoutés sont dans le mail envoyé.
  14.  
  15. mail($To, $Subject, $message, $headers)

m
0
l
Contenus similaires
31 Mai 2010 10:07:53

Bonjour,
J'ai le même problème, quelqu'un aurait-il trouvé une solution ?
Merci
m
0
l
31 Mai 2010 10:37:37

salut. ptet un problème d'encodage
m
0
l
1 Juin 2010 01:50:56

A mon avis je dirait que c'est ton client mail.

As tu essayer d'envoyer le mail sur une autre adresse pour voir si le problème se reproduit ? Sur une adresse gmail ou hotmail par exemple. (Un fournisseur différent que celui que tu as utilisé pour ton test)
m
0
l
11 Juin 2010 09:25:09

Merci de vos contributions.
J'ai essayé plusieurs clients mail.
J'ai aussi tenter de couper le contenu en "sous-chaines", rien n'y fait.

Et plus fort, l'espace ajouté ou le caractère zappé n'ont pas la même occurence dans des messages différents.

Serait-ce un problème inhérent à la fonction "mail" de PHP4 ?
m
0
l
16 Juin 2010 12:16:06

Pour ma part je n'ai jamais eu ce problème..

Quand tu dis
Citation :
les variables message et Subject sont récupérées à partir d'une BD mySql. Si on les affiche, elles ne sont pas altérées. Les problèmes de caractère(s) shuntés ou d'espace(s) ajoutés sont dans le mail envoyé.

> tu regardes bien le résultat en affichant la source ? et pas directement sur ta page web.
m
0
l
Anonyme
21 Juillet 2010 15:48:04

À ce qui paraît, le problème ne serait pas lié au serveur ou à la version de PHP, mais au service de courriel lui-même.

Au-delà d'un certain nombre de caractères html (environ 200), le service ajoute un espace pour forcer un retour de ligne.

La solution est donc d'ajouter des sauts de lignes dans le PHP ("\r\n") pour que le code html passe à une nouvelle ligne assez fréquemment.
m
0
l
24 Juillet 2010 15:05:34

Salut,

PHP nous emmerde souvent pour un rien, il faut tester ligne apres ligne.


1er test:
Supprimer toutes les fonctions qui traite les chaines.

Supprime:
$message = str_replace(chr(10),"<br>",$message);
$Subject = str_replace(chr(10),"<br>",$Subject );

Toujours le meme probleme, on passe au

2 eme test:
Supprime les headers.
Utilise simplement:
mail($To, $Subject, $message)

Toujours ce probleme:

3 eme test:

Affiche le message avec echo:
echo $message;

Execute la page sur ton navigateur;
Si tu voie le meme probleme d'affichage fais "Afficher la source" et regarde ce qu'il contient.
Fais le nous partager aussi :) 

4 eme test:

Change carrément de serveur.
Essai un serveur en ligne (hebergeur) ou remplace easyphp par wampserver par exemple.
m
0
l
20 Janvier 2011 14:41:36

Citation :
À ce qui paraît, le problème ne serait pas lié au serveur ou à la version de PHP, mais au service de courriel lui-même.

Au-delà d'un certain nombre de caractères html (environ 200), le service ajoute un espace pour forcer un retour de ligne.

La solution est donc d'ajouter des sauts de lignes dans le PHP ("\r\n") pour que le code html passe à une nouvelle ligne assez fréquemment.



Merci pour cette soluce, ca fonctionne impeccable :) 
m
0
l
23 Janvier 2011 19:29:52

Hello,

J'avais le meme probleme et je confirme, la soluce proposée fonctionne parfaitement.
Generalement, dans nos mails nous avons soit des tables html, soit des div, ou des fois les 2.
Vous prenez le code ci-dessous et c'est réglé.

  1. $message = str_replace('</tr>',"</tr>\r\n",$message);
  2. $message = str_replace('</div>',"</div>\r\n",$message);


A+,
Julien
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS