要实现您提到的结果,您必须使用internal CSS,它位于report.html 的head 部分,位于style 元素内。
因此,如果您有指向外部 CSS 的链接,您希望将其替换为 report-styles.css 中的实际 CSS,并将其放置在样式元素中。
report-styles.css:
h1 {
color: blue;
}
p {
color: red;
}
report.html之前:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="report-styles.css">
</head>
<body>
<div>Your report</div>
</body>
</html>
用文件中的实际 CSS 替换 CSS 链接
report.html 之后:
<!DOCTYPE html>
<html>
<head>
<style>
h1 {
color: blue;
}
p {
color: red;
}
</style>
</head>
<body>
<div>Your report</div>
</body>
</html>
然后您可以将report.html 添加到您的电子邮件中,所有样式都将在那里,而无需引用该外部文件。
这将需要您在报告完成后和发送电子邮件之前进行一些额外的编码。
您可以使用 gulp 之类的东西为您进行替换或编写您自己的代码进行替换。
gulp.js example:
var gulp = require('gulp');
var replace = require('gulp-replace');
var fs = require('fs');
function getCSSFilename(linkTag) {
var hrefValue = /href\=\"([A-Za-z0-9/._]*)\"/g;
var cssFilename = linkTag.match(hrefValue);
cssFilename = cssFilename[0].replace("href=\"", "").replace("\"", "");
return cssFilename;
}
gulp.task('inject-styles', function () {
return gulp.src("./report/report.html")
.pipe(replace(/<link rel="stylesheet" href="[^"]*"*>/g, function(linkTag) {
var style = fs.readFileSync(`.${getCSSFilename(linkTag)}`, 'utf8');
return '<style>\n' + style + '\t</style>';
}))
.pipe(gulp.dest('./report'));
});
希望这足以让您知道如何实现您所描述的目标。