Accueil > > > TRANSFORMER DU TEXTE OU DE L'HTML EN TEXTE CONFORME À LA NORME D'ENVOI D'EMAIL RFC2045 QUOTED PRINTABLE
TRANSFORMER DU TEXTE OU DE L'HTML EN TEXTE CONFORME À LA NORME D'ENVOI D'EMAIL RFC2045 QUOTED PRINTABLE
Information sur la source
Description
suite à des envois de mail pour une newsletter, hotmail, msn live, yahoo et ymail ont mis en spam pour non conformité à la rfc2045 j'ai essayé avec la fonction "chunk_split(base64_encode($messhtml))" qui est conforme en tout point par la rfc2045, mais c'est normalement réservé au codage de fichier donc interprété comme du spam ! voici tout ce que ce script fait : - transformation des caractères ascci ISO_8859-1 non supportés par quoted-printable en leurs équivalent hexadécimal (ex: "=" en "=3D" ou "é" en "=E9" lien vers la table de conversion : http://fr.wikipedia.org/wiki/ISO_8859-1 - des lignes de 76 caractères maxi - le 76ème caractère doit être "=\r\n" - il ne faut pas couper un caractère quoted-printable sur 2 lignes (ex: "=E9")
Source
- <?php
-
- function RFC2045_quoted_printable($str, $html)
- {
- if ($html==1)
- {
- //remplacement des caracteres en leur équivalent html
- $str=htmlentities($str);
-
- //enlevons les retours chariots et tabulations qui ne servent à rien dans le html
- $str = str_replace(array("\t", "\r", "\n","\r\n" )," ",$str);
- // enlever les espaces en trop qui ne servent à rien dans le html
- $str = ereg_replace("[ ]+", " ",$str);
- }
- //echo $str;
- $out = '';
-
- //transformation en quoted printable
- for ($j = 0; $j <= strlen($str) - 1; $j++)
- {
- //ne supporte pas l'unicode si caractère sont encodés sur 2 caractères
- $char = substr ( $str, $j, 1 );
- $ascii = ord ( $char );
-
-
- if ( $ascii < 32 || $ascii == 61 || $ascii > 126 )
- {
- $char = '=' . strtoupper ( sprintf("%02X", $ascii ) );
- }
- $out .= $char;
- }
-
- $line = $out;
- $out = '';
- //coupure du texte en ligne de 76 caracteres ou plus
- while ( strlen($line) >= 76 )
- {
- //controle si le 74eme caractere est un =
- if ($line[73]=='=')
- {
- $out.=substr($line,0,73)."=\r\n";
- $line=substr($line,73) ;
- }
- else {
- //controle si le 75eme caractere est un =
- if ($line[74]=='=')
- {
- $out.=substr($line,0,74)."=\r\n";
- $line=substr($line,74) ;
- }
- else {
- //remplacement du 76ème
- $out.=substr($line,0,75)."=\r\n";
- $line=substr($line,75) ;
- }
- }
- }
- }
- $out.=$line."\r\n";
- return $out;
- }
-
-
- //echo RFC2045_quoted_printable($message,0);
- //echo RFC2045_quoted_printable($messagehtml,1);
-
-
- ?>
<?php
function RFC2045_quoted_printable($str, $html)
{
if ($html==1)
{
//remplacement des caracteres en leur équivalent html
$str=htmlentities($str);
//enlevons les retours chariots et tabulations qui ne servent à rien dans le html
$str = str_replace(array("\t", "\r", "\n","\r\n" )," ",$str);
// enlever les espaces en trop qui ne servent à rien dans le html
$str = ereg_replace("[ ]+", " ",$str);
}
//echo $str;
$out = '';
//transformation en quoted printable
for ($j = 0; $j <= strlen($str) - 1; $j++)
{
//ne supporte pas l'unicode si caractère sont encodés sur 2 caractères
$char = substr ( $str, $j, 1 );
$ascii = ord ( $char );
if ( $ascii < 32 || $ascii == 61 || $ascii > 126 )
{
$char = '=' . strtoupper ( sprintf("%02X", $ascii ) );
}
$out .= $char;
}
$line = $out;
$out = '';
//coupure du texte en ligne de 76 caracteres ou plus
while ( strlen($line) >= 76 )
{
//controle si le 74eme caractere est un =
if ($line[73]=='=')
{
$out.=substr($line,0,73)."=\r\n";
$line=substr($line,73) ;
}
else {
//controle si le 75eme caractere est un =
if ($line[74]=='=')
{
$out.=substr($line,0,74)."=\r\n";
$line=substr($line,74) ;
}
else {
//remplacement du 76ème
$out.=substr($line,0,75)."=\r\n";
$line=substr($line,75) ;
}
}
}
}
$out.=$line."\r\n";
return $out;
}
//echo RFC2045_quoted_printable($message,0);
//echo RFC2045_quoted_printable($messagehtml,1);
?>
Conclusion
merci de faire part d'améliorations à apporter
Historique
- 13 février 2010 11:32:47 :
- conversion des caractères accentué en leur équivalent html avec la fonction :
$str=htmlentities($str);
- 23 février 2010 18:35:54 :
- problème dans le contrôle des 74ème et 75ème caractères pour éviter de couper un caractère quoted-printable sur 2 lignes
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Probleme type MIME [ par Cisaks ]
Bonjour,Je ne comprend pas car lors de l'envoi d'un email j'attache un fichier qui à été prealablement uploader sur mon serveur. Après l'envoi j'ai af
email incomplet club internet [ par cseagle ]
Bonjour,J'ai un script classique d'envoi de newsletter html qui fonctionne très bien sauf sur club internet ou le contenu de mon mail est coupé en ple
UPDATE de plusieurs tables [ par noreille79 ]
J'ai un souci lors de la mise à jour (par les membres)des tables de ma base de données. Il modifie mon mot de passe même si je lui en ai pas déclaré
formulaire aide please [ par sk8ter57 ]
alors voial je debute en php j'aimerai creer un formulaire ou une fois ke la personne a tout rempli sa envoi vers une adresse email voici la page html
Envoi d'email Multi Destinataire [ par R3dDragon ]
Bonjour,J'ai une question, sa fait quelques jours que je programme mon nouveau site web, et là je tombe sur un problème, j'aimerais suite à formulaire
envoyer un email à plusieurs personnes [ par soussan ]
salutje veux envoyere un fichier(lettre)aux plusieurs clients .je sais pas comment est ce que je doit avoir une base de données qui contient ces adres
Erreur dans un script de formulaire [ par Sven78 ]
Bonjour à toutes et à tous Google m'a conduit ici quand je lui ai demandé de l'aide sur la fonction $_POST qui semble me poser problème À la base c'e
envoyer email avec blat [ par lahlousimo ]
bonjour,j'ai pas pu envoyer un mail avec les code source que j'ai trouvé ici ,je ne sais pas ou est le probleme , mais j'ai reussi d'envoyer un email
Erreur - unexpected T_ELSEIF [ par Frank9321 ]
Bonjour,j'ai fait un petit code PHP mais la, ca me bloque. Il me dit:Parse error: syntax error, unexpected T_ELSEIF in E:\www\inscription\inscription
petit probléme de redirection [ par doberman_420 ]
Bonjour, Alor voila j'ai un petit soucil de redirection sur le script ci-dessous, quand je valide ma photo ou veu sortir pour ne pas mettre de photo e
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|