Decodage quoted-printable pour les mails

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 956 fois - Téléchargée 27 fois

Contenu du snippet

Voici un petit bout de code sans prétention mais qui est bien utile quand 40% des mails avec l'encodage quoted printable ne respecte pas la RFC.
Vous savez les =20 ou autre =E9

Pour info :
http://bugs.php.net/bug.php?id=7531

Source / Exemple :


for($i=0;$i<256;$i++)
   { 
   $c1=dechex($i);
   if(strlen($c1)==1){$c1="0".$c1;} 
   $c1="=".$c1;
   $myqprinta[]=$c1;
   $myqprintb[]=chr($i);
   }
function my_imap_qprint($text)
   {
   $decode=imap_qprint(str_replace($myqprinta,$myqprintb,$mymailbody));
   }
$montextebien=my_imap_qprint($montextepasbien)

Les autres codages ne posant pas de probleme pour php: pas de detail

Conclusion :


Le seul bug c'est si vous avez un mail avec par exemple : "le montant =20 ?" ca donnera un "le montant ?"
Il remplace le =20 par un espace

A voir également

Ajouter un commentaire

Commentaires

Isoth0p
Messages postés
42
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
15 septembre 2005

ton code n'a aucune chance de marcher : les variables ne sont pas initialisées et générent donc des erreurs, ou alors tu ne les passes pas dans la fonction ... ton code ne vaut pas la moyenne.


# function my_imap_qprint( $mymailbody )
# {
# $myqpa = array();
# $myqpb = array();
#
# for ( $i = 0; $i < 256; $i++ )
# {
# $c = dechex( $i );
#
# if ( strlen( (string)$c ) === 1 )
# $c = '0' . (string)$c;
#
# $c = '=' . $c;
# $myqpa[] = $c;
# $myqpb[] = chr( $i );
# }
#
# return imap_qprint( str_replace( $myqpa, $myqpb, $mymailbody ) );
# }
malalam
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
Hello,

je n'ai jamais eu l'occasion de me pencher sur le problème, mais j'ai lu ton lien.
Bref, je n'ai pas grandchose à dire, mais comme tu n'avais ni commentaire, ni note... : voilà, c'est original, et sans aucun doute utile, donc bien :-)
Juste, tu aurais peut-être pu tout mettre dans ta fonction, non...? Et ta fonction ne retourne rien...elle devrait retourner le $decode. Sans ça, ça a peu de chance de fonctionner.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.