Công cụ nào để tự động nội tuyến kiểu CSS để tạo mã HTML email? [đóng cửa]


122

Khi bạn xem tại http://www.campaignmonitor.com/css/, bạn biết rằng bạn cần phải nhúng các kiểu nội tuyến trong HTML của mình để email của bạn có thể đọc được trong bất kỳ ứng dụng thư nào.

Bạn có biết bất kỳ công cụ hoặc tập lệnh nào để tự động chuyển đổi tệp HTML có khai báo trong tệp HTML chỉ có thuộc tính kiểu CCS nội tuyến không?

Chỉnh sửa : Bất kỳ giải pháp Javascript nào (tức là: http://www.robertnyman.com/2006/04/24/get-the-render-style-of-an-element/ )? Với jQuery?


3
Tôi vừa hỏi một câu hỏi tương tự trên Đề xuất phần mềm như một phần tiếp theo cho câu hỏi này: softwarerecs.stackexchange.com/questions/9983/…
Grzegorz Oledzki,

Tôi chỉ phải giải quyết vấn đề chính xác này cho một bộ phận tại nơi làm việc. Câu hỏi này đã cung cấp các bước cần thiết để giải quyết vấn đề.
Gopherkhan

Câu trả lời:


80

Kiểm tra trình chuyển đổi trực tuyến premailer.dialect.ca hoặc tập lệnh Python này để thực hiện.


10
Có vẻ như Premailer đã chuyển sang một URL mới: premailer.dialect.ca
Matt Huggins

2
Thư tinh tinh cung cấp một phong cách tuyệt vời inliner đây: beaker.mailchimp.com/inline-css
dhornbein

1
premailer.dialect.ca là rất tốt, nhưng nó bị nghẹt trên nhiều trang. Đó là hơn một nửa trong thử nghiệm của tôi. Ví dụ, hãy thử trang này.
Nick Woodhams 27/12/12

Chạy máy chủ thư trước của riêng bạn ... github.com/TrackIF/premailer-server Dễ dàng chạy trên ec2: docs.aws.amazon.com/elasticbeanstalk/latest/dg/…
Adam Lane

NONE trong số họ thực sự loại bỏ các thẻ STYLE, mà là vấn đề chính, bạn sẽ đối phó với
Coldstar

33

Dưới đây là danh sách các công cụ dựa trên web sẵn sàng sử dụng nội tuyến, một vài công cụ đã được đề cập trước đây. Nếu có bất kỳ điều gì tôi đã bỏ qua, vui lòng chỉnh sửa và thêm chúng. Tôi không thể hứa mỗi tác phẩm như quảng cáo, vì vậy hãy thả bình luận, nhưng đừng bắn người đưa tin ...

Và đây là một trong những hoạt động ngược lại (bỏ nội dòng css của bạn)


3
MailerMailer là ứng dụng duy nhất phù hợp với tôi trong khi vẫn giữ nguyên định dạng.
Jeshurun

20

Nếu bạn muốn có một giải pháp PHP, bạn có thể thử CssToInlineStyles .


2
kịch bản php đó được viết tốt. nó không xử lý cờ! important, nhưng nó là một tập lệnh hay.
Perry Tew


8

Tôi đã viết một thư viện Node.js có tên là Styliner nội tuyến CSS trong Javascript phía máy chủ.

Nó cũng hỗ trợ LESS bảng định kiểu (và hỗ trợ plugin cho các định dạng khác)


7

Bạn có thể muốn xem qua PostageApp .

Một trong những tính năng thực sự mạnh mẽ của nó là nó có một hệ thống tạo khuôn mẫu rất mạnh mẽ có thể tự động nội tuyến HTML và CSS mà không gặp bất kỳ vấn đề nào.

( Tiết lộ đầy đủ: Tôi là Giám đốc sản phẩm của PostageApp.)


vì vậy bạn đang thực hiện nội tuyến CSS ở cuối chuỗi xử lý (ngay trước khi gửi e-mail cho ai đó)?
zazi

6

Điều này có thể hơi muộn, nhưng nếu bạn muốn làm cho HTML của mình trở nên tốt nhất có thể cho tiếp thị qua e-mail (bằng cách nội tuyến css của bạn và sử dụng một loạt các công cụ thú vị khác), hãy sử dụng Premailer . Nó miễn phí và tất nhiên, được hợp tác với chính CampaignMonitor.

Hy vọng nó giúp.


+1 cho Premailer. Nó có cả biểu mẫu web và API mà bạn có thể sử dụng để tích hợp nó vào bất kỳ nền tảng nào. Nếu bạn đang sử dụng node.js, có một trình bao bọc ở đây .
Jed Watson

6

Tôi hơi muộn với trò chơi nhưng hy vọng điều này sẽ giúp ích cho ai đó.

Tôi tìm thấy phương thức jQuery / javascript nhỏ hay này có thể được nhúng vào một trang - http://devintorr.es/blog/2010/05/26/turn-css-rules-into-inline-style-attributes-using-jquery /

Tôi đã chỉnh sửa một chút để hỗ trợ IE và cũng để hỗ trợ một trang có nhiều tệp CSS đính kèm, áp dụng các kiểu theo đúng thứ tự.

$(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();
        });

Sau đó, trang này có thể được sao chép / dán vào nội dung email.


tại sao bạn loại bỏ script? Và những thực thi loại bỏ tôi nghĩ nên đi ra ngoài vòng lặp for.
jcubic

@jcubic Bạn đã đúng khi: vị trí thực hiện loại bỏ, tôi sẽ chỉnh sửa. Việc xóa tập lệnh nằm trong mã gốc của tôi, tôi muốn HTML sạch hơn chỉ với những gì thực sự cần thiết để hiển thị trang.
John C

Rất cảm ơn vì kịch bản ngắn gọn này, tôi đã tìm kiếm hàng giờ và đây là giải pháp rõ ràng nhất mà tôi đã tìm thấy.
kerzek

1
Ở cùng thuyền với @kerzek. Điều này đã hoạt động ở một mức độ nào đó nhưng một số phong cách bị rối loạn. Phiên bản này của mã tuy nhiên làm việc tuyệt vời (thử nghiệm và evertything): devintorr.es/blog/2010/05/26/...
radu.luchian

5

Chỉ nội dòng CSS của bạn là không đủ. Không có tiêu chuẩn quan sát nào về cách một email HTML sẽ được hiển thị trong bất kỳ ứng dụng email nào được sử dụng. Tất cả đều làm điều đó theo cách khác nhau, và bạn càng thiết kế email của mình càng nhiều thì khả năng nó sẽ thu hút được nhiều khách hàng hơn. Nhiều chuyên gia trong không gian này chỉ đơn giản sử dụng hình ảnh và bảng và có thể một số màu nền, ngoài ra không có gì khác. Luôn bao gồm liên kết đến trang web có bản sao email đang hoạt động và luôn cung cấp biến thể văn bản thuần túy.




Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.