简体   繁体   English

如何使用CSS样式安全地加载电子邮件内容

[英]How to securely load email content with css style

I am using AngularJS to dynamically load the emails content. 我正在使用AngularJS动态加载电子邮件内容。 Everything works perfectly fine until the moment when I load email with html content and with own css style. 一切正常,直到我加载带有html内容和自己的CSS样式的电子邮件为止。 Then style from email affects style in my application. 然后,电子邮件中的样式会影响我的应用程序中的样式。

For example if in email body is css directive p { color: #f00; } 例如,如果在电子邮件正文中为css指令p { color: #f00; } p { color: #f00; } , then in my entire app all paragraphs change color to red. p { color: #f00; } ,然后在我的整个应用中,所有段落的颜色都变为红色。

How to separate email styles from application styles? 如何将电子邮件样式与应用程序样式分开?

Thanks in advance! 提前致谢!

PS. PS。 My code looks like 我的代码看起来像

$scope.loadMessage = function(message_uid){

    $scope.loadingMessage = true;

    $http({
        url: baseApiURL + 'mail/' + message_uid,
        method: 'GET',
        headers: {'Authorization': userApiKey},
    }).then(showMessage, errorDuringLoadMessage);

    showMessage = function(r) {
        $scope.message.body = $sce.trustAsHtml(r.data.message);
        $scope.message.subject = r.data.subject;
        $scope.message.from = r.data.from;
        $scope.loadingMessage = false;
    };

    /* ... */
};

And view: 并查看:

<div class="panel panel-success">
  <div class="panel-body" ng-hide="loadingMessage" ng-bind-html="message.body">
</div>

The easiest way I can think of doing this is writing it into an iframe. 我想到的最简单的方法是将其写入iframe。

var frame = document.createElement('iframe');
/* position, style, and append iframe here... */
var frameDoc = frame.contentWindow.document;
frameDoc.open();
frameDoc.write($scope.message.body);
frameDoc.close();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM