2014-10-22 16 views
6

Tôi đã viết một ứng dụng web tìm nạp email qua IMAP. Hiện tại, tôi cần hiển thị các email này cho người dùng. Tôi nghĩ rằng nó sẽ là đơn giản (tôi đang hiển thị HTML trong một trình duyệt HTML có khả năng) cho đến khi tôi nhìn vào trong này một chút ... và phát hiện ra rằng có tấn các vấn đề, chẳng hạn như:Làm thế nào để hiển thị một email HTML trong một ứng dụng web?

  • Javascript & an ninh
  • Phong cách phá vỡ
  • Chắc chắn hơn

tốt, an toàn cách để hiển thị email HTML? Tôi sẽ sai cho "an toàn" hơn là "tuyệt đẹp", mặc dù tôi không muốn hiển thị chỉ là phiên bản văn bản của một email (mà thậm chí không được đảm bảo để có anyway ...)

Tôi nhận ra câu trả lời rõ ràng nhất là "đặt tất cả mọi thứ trong một khung" - đó thực sự là nó? Liệu nó thực sự là có hoạt động không?

Tôi đang sử dụng phía máy chủ Node nếu nó giúp ...

Trả lời

6

trả lời rõ ràng ..most được "đặt tất cả mọi thứ trong một khung" ... sẽ nó thực làm việc?

Có, ví dụ: Whiteout Networks GmbH's WHITEOUT.IO thực hiện trong /src/tpl/read.html/src/js/controller/read-sandbox.js. Một số vấn đề an ninh được xử lý bởi DOMPurify

..there tấn issues..Is có một tốt, an toàn cách ..?

Tôi biết các định dạng thông điệp dữ liệu cũng dưới tên EML hoặc MHTML để tìm kiếm một tốt "XY sang HTML Chuyển đổi" hoặc "HTML5 xem tài liệu với sự hỗ trợ XY" có thể chỉ cho bạn một kết quả có thể sử dụng (ví dụ GroupDocs.Viewer)

một số e-mail client (ví dụ Gmail) không sử dụng iframe, thay vào đó họ sử dụng một phân tích cú pháp mail (ví dụ andris9/mailparser) và một phân tích cú pháp HTML (ví dụ cheeriojs/cheerio) để trích xuất một tập hợp con e-mail an toàn-html (xem Stack Overflow: What guidelines for HTML email design are there?Stack Overflow: Styling html email for GMail để biết một số ví dụ) hoặc sử dụng HTML sanitizer (ví dụ: Google's Caja, cure53/DOMPurify) và nhúng mã trực tiếp vào trang. Nhưng không phải lúc nào cũng là một điều dễ dàng, không có sự nhất trí về những gì cấu thành tập con e-mail-safe-html và bạn chắc chắn không muốn nội dung đính kèm có thể bị nhiễm hoặc chạy các tập lệnh CORS ẩn danh trong số người dùng secured phiên.

Dù sao, như mọi khi, nghiên cứu mã nguồn của ứng dụng e-mail khác nhau (xem Wikipedia: Comparison of email clients) là cách để tìm hiểu ..

+2

có chấp nhận câu trả lời miễn là nó đề cập https Caja của Google: // mã. Google.com/p/google-caja/wiki/JsHtmlSanitizer là chìa khóa để giải quyết vấn đề của tôi – Merc

+0

@Merc trong trường hợp đó, bạn có thể chấp nhận http://stackoverflow.com/help/self-answer và upvote của riêng mình nếu nó mang lại một cái gì đó hữu ích – xmojmr

+0

câu trả lời của bạn là tuyệt vời và tôi nghĩ rằng nó phải là một trong những chấp nhận! Xin vui lòng chỉ cần thêm một tài liệu tham khảo nhanh chóng để caja, đó là tất cả! – Merc

Các vấn đề liên quan