Quels outils pour intégrer automatiquement le style CSS pour créer du code HTML de courrier électronique? [fermé]


122

Lorsque vous jetez un œil à http://www.campaignmonitor.com/css/, vous apprenez que vous devez incorporer des styles en ligne dans votre HTML, afin que votre e-mail puisse être lu dans n'importe quel client de messagerie.

Connaissez-vous des outils ou des scripts pour convertir automatiquement un fichier HTML avec une entrée déclarée en fichier HTML avec uniquement des attributs de style CCS en ligne?

Edit : Une solution Javascript (par exemple: http://www.robertnyman.com/2006/04/24/get-the-rendered-style-of-an-element/ )? Avec jQuery?


3
Je viens de poser une question similaire sur les recommandations logicielles pour faire suite à celle-ci: softwarerecs.stackexchange.com/questions/9983/...
Grzegorz Oledzki

Je devais juste résoudre ce problème pour un département au travail. Cette question a fourni les étapes nécessaires pour résoudre le problème.
Gopherkhan

Réponses:


80

Vérifiez le convertisseur en ligne premailer.dialect.ca ou ce script Python pour le faire.


10
On dirait que Premailer a été déplacé vers une nouvelle URL: premailer.dialect.ca
Matt Huggins

2
Mail chimp propose un style inliner
génial

1
premailer.dialect.ca est génial, mais il s'étouffe sur beaucoup de pages. C'est plus de la moitié dans mes tests. Par exemple, essayez cette page.
Nick Woodhams

Exécutez votre propre serveur premailer ... github.com/TrackIF/premailer-server Facile à exécuter sur ec2: docs.aws.amazon.com/elasticbeanstalk/latest/dg/…
Adam Lane

AUCUN d'entre eux ne supprime réellement la balise STYLE, qui est le principal problème que vous allez résoudre
Coldstar

33

Voici une liste d'outils intégrés prêts à l'emploi basés sur le Web, certains ont été mentionnés précédemment. S'il y en a que j'ai manqué, n'hésitez pas à les modifier et à les ajouter. Je ne peux pas promettre que chacun fonctionne comme annoncé, alors laissez tomber les commentaires, mais ne tirez pas sur le messager ...

Et en voici un qui fonctionne à l'envers (désinsertion de votre css)


3
MailerMailer était le seul qui a fonctionné pour moi tout en gardant le formatage intact.
Jeshurun

20

Si vous souhaitez avoir une solution PHP, vous pouvez essayer CssToInlineStyles .


2
ce script php est bien écrit. il ne gère pas le drapeau! important, mais c'est néanmoins un bon script.
Perry Tew


8

J'ai écrit une bibliothèque Node.js appelée Styliner qui intègre CSS en Javascript côté serveur.

Il prend également en charge les feuilles de style MOINS (et prend en charge les plugins pour d'autres formats)


7

Vous voudrez peut-être jeter un œil à PostageApp .

L'une de ses fonctionnalités vraiment fortes est qu'il dispose d'un système de création de modèles très robuste qui peut automatiquement intégrer HTML et CSS sans aucun problème.

( Divulgation complète: je suis le chef de produit pour PostageApp.)


vous faites donc une insertion CSS à la fin de la chaîne de traitement (juste avant d'envoyer l'e-mail à quelqu'un)?
zazi

6

C'est peut-être un peu trop tard, mais si vous voulez rendre votre HTML le meilleur possible pour le marketing par e-mail (en insérant votre css et en utilisant un tas d'autres outils sympas), utilisez le Premailer . C'est gratuit, et bien sûr, réalisé en partenariat avec CampaignMonitor lui-même.

J'espère que ça aide.


+1 pour Premailer. Il possède à la fois un formulaire Web et une API que vous pouvez utiliser pour l'intégrer à n'importe quelle plate-forme. Si vous utilisez node.js, il existe un wrapper ici .
Jed Watson

6

Je suis un peu en retard au match, mais j'espère que cela aidera quelqu'un.

J'ai trouvé cette jolie petite méthode jQuery / javascript qui peut être intégrée dans une page - http://devintorr.es/blog/2010/05/26/turn-css-rules-into-inline-style-attributes-using-jquery /

Je l'ai un peu modifié pour prendre en charge IE et également pour prendre en charge une page avec plusieurs fichiers CSS attachés en appliquant des styles dans le bon ordre.

$(document).ready(function ($) {
            var rules;
            for(var i = document.styleSheets.length - 1; i >= 0; i--){
                if(document.styleSheets[i].cssRules)
                    rules = document.styleSheets[i].cssRules;
                else if(document.styleSheets[i].rules)
                    rules = document.styleSheets[i].rules;
                for (var idx = 0, len = rules.length; idx < len; idx++) {
                    if(rules[idx].selectorText.indexOf("hover") == -1) {
                        $(rules[idx].selectorText).each(function (i, elem) {
                            elem.style.cssText = rules[idx].style.cssText + elem.style.cssText;
                        });
                    }
                }
            }
            $('style').remove();
            $('script').remove();
            $('link').remove();
        });

La page peut ensuite être copiée / collée dans le corps de l'e-mail.


pourquoi supprimez-vous le script? Et ceux qui suppriment l'exécution, je pense, devraient sortir de la boucle for.
jcubic

@jcubic Vous avez raison concernant le placement de l'exécution de la suppression, je vais le modifier. La suppression du script était dans mon code d'origine, je voulais un HTML plus propre avec seulement ce qui était vraiment nécessaire pour afficher la page.
John C du

Merci beaucoup pour ce script concis, je cherche depuis des heures et c'est la solution la plus propre que j'ai trouvée.
kerzek

1
Était dans le même bateau que @kerzek. Cela a fonctionné dans une certaine mesure, mais certains styles ont été perturbés. Cette version du code fonctionnait cependant très bien (testé et tout): devintorr.es/blog/2010/05/26
...

5

Il ne suffit pas de simplement intégrer votre CSS. Il n'y a pas de normes observées sur la façon dont un e-mail HTML sera affiché dans le client de messagerie utilisé. Ils le font tous différemment, et plus vous concevez votre e-mail, plus il est probable qu'il brisera un plus grand nombre de clients. De nombreux professionnels de cet espace utilisent simplement des images et des tableaux et peut-être des couleurs d'arrière-plan, mais rien d'autre. Incluez toujours un lien vers un site Web contenant une copie de travail de l'e-mail et fournissez toujours une variante en texte brut.




En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.