Quali strumenti per incorporare automaticamente lo stile CSS per creare codice HTML e-mail? [chiuso]


122

Quando dai un'occhiata a http://www.campaignmonitor.com/css/ apprendi che devi incorporare stili inline nel tuo HTML, in modo che la tua email possa essere letta in qualsiasi client di posta.

Conosci strumenti o script per convertire automaticamente un file HTML con una dichiarazione in un file HTML con solo attributi di stile CCS in linea?

Modifica : qualsiasi soluzione Javascript (ad esempio: http://www.robertnyman.com/2006/04/24/get-the-rendered-style-of-an-element/ )? Con jQuery?


3
Ho appena posto una domanda simile su Raccomandazioni software come seguito a questa: softwarerecs.stackexchange.com/questions/9983/…
Grzegorz Oledzki

Dovevo solo risolvere questa cosa esatta per un dipartimento al lavoro. Questa domanda ha fornito i passaggi necessari per risolvere il problema.
Gopherkhan

Risposte:


80

Controlla il convertitore online premailer.dialect.ca o questo script Python per farlo.


10
Sembra che Premailer sia stato spostato su un nuovo URL: premailer.dialect.ca
Matt Huggins

2
Mail Chimp offre un grande stile inliner qui: beaker.mailchimp.com/inline-css
dhornbein

1
premailer.dialect.ca è fantastico, ma si strozza in molte pagine. È più della metà nei miei test. Ad esempio, prova questa pagina.
Nick Woodhams,

Esegui il tuo server premailer ... github.com/TrackIF/premailer-server Facile da eseguire su ec2: docs.aws.amazon.com/elasticbeanstalk/latest/dg/…
Adam Lane

NESSUNO di loro rimuove effettivamente il tag STYLE, che è il problema principale di cui dovrai occuparti
Coldstar

33

Ecco un elenco di strumenti inlining pronti per l'uso basati sul web, un paio sono stati menzionati in precedenza. Se ce ne sono alcuni che mi sono perso, sentiti libero di modificarli e aggiungerli. Non posso promettere che ognuno funzioni come pubblicizzato, quindi rilascia i commenti, ma non sparare al messaggero ...

Ed eccone uno che funziona al contrario (un-inlining il tuo CSS)


3
MailerMailer è stato l'unico che ha funzionato per me mantenendo intatta la formattazione.
Jeshurun



8

Ho scritto una libreria Node.js chiamata Styliner che integra CSS in Javascript lato server.

Supporta anche LESS stylesheets (e supporta plugin per altri formati)


7

Potresti dare un'occhiata a PostageApp .

Una delle sue caratteristiche davvero forti è che ha un sistema di modelli molto robusto che può incorporare automaticamente HTML e CSS senza problemi.

( Divulgazione completa: sono il Product Manager di PostageApp.)


quindi stai facendo CSS inlining alla fine della catena di elaborazione (subito prima di inviare l'e-mail a qualcuno)?
zazi

6

Potrebbe essere un po 'troppo tardi, ma se vuoi rendere il tuo HTML il migliore possibile per l'e-mail marketing (incorporando il tuo css e usando una serie di altri fantastici strumenti), usa il Premailer . È gratuito e, naturalmente, realizzato in collaborazione con CampaignMonitor stesso.

Spero che sia d'aiuto.


+1 per Premailer. Ha sia un modulo web che un'API che puoi utilizzare per integrarlo in qualsiasi piattaforma. Se stai usando node.js, c'è un wrapper qui .
Jed Watson

6

Sono un po 'in ritardo per la partita, ma spero che questo possa aiutare qualcuno.

Ho trovato questo simpatico metodo jQuery / javascript che può essere incorporato in una pagina: http://devintorr.es/blog/2010/05/26/turn-css-rules-into-inline-style-attributes-using-jquery /

L'ho modificato un po 'per supportare IE e anche per supportare una pagina con più file CSS allegati che applicano gli stili nell'ordine corretto.

$(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 pagina può quindi essere copiata / incollata nel corpo dell'email.


perché rimuovi lo script? E quelli rimuovono l'esecuzione che penso dovrebbero andare al di fuori del ciclo for.
jcubic

@jcubic Hai ragione riguardo al posizionamento dell'esecuzione di rimozione, lo modifico. La rimozione dello script era nel mio codice originale, volevo un HTML più pulito con solo ciò che era veramente necessario per visualizzare la pagina.
John C

Molte grazie per questo script conciso, ho cercato per ore e questa è la soluzione più pulita che ho trovato.
Kerzek

1
Era sulla stessa barca di @kerzek. In una certa misura ha funzionato, ma alcuni stili sono stati incasinati. Questa versione del codice tuttavia ha funzionato in modo eccellente (testato e completo): devintorr.es/blog/2010/05/26/…
radu.luchian

5

Non è sufficiente incorporare semplicemente il tuo CSS. Non ci sono standard osservati su come verrà mostrata un'e-mail HTML in qualsiasi client di posta elettronica venga utilizzato. Lo fanno tutti in modo diverso, e più progetti la tua email, più è probabile che si rompa in un maggior numero di client. Molti professionisti in questo spazio usano semplicemente immagini e tabelle e forse alcuni colori di sfondo, ma nient'altro. Includere sempre un collegamento a un sito Web che abbia una copia funzionante dell'e-mail e fornire sempre una variante di testo normale.




Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.