我开发了一个报告,它大量使用了RMarkdown v2中的功能,特别是为html文档添加css类和id的功能,以便使用样式表更好地控制输出。我希望将这些报告发送到电子邮件正文中。我一直在尝试使用send.mail(mailR)。根据他们的gitgub自述文件(https://github.com/rpremraj/mailR/blob/master/README.md)
mailR目前不支持解析使用数据URI方案编码的内嵌图像。请改用下面的解决方法:
首先,从R终端创建HTML文件(这里重要的是选项不包括“base64_images”---请参阅?markdown :: markdownHTMLOptions):
library(knitr)
knit2html("my_report.Rmd", options = "")
现在您可以通过mailR ...
发送生成的HTML文件
问题是knit2html似乎仍然使用RMarkdown v1,它不支持将css类和id添加到文档的语法。有没有其他解决方法,例如使用rmarkdown :: render并以某种方式通过 options 参数?或者knitr是否有使用RMarkdown v2的时间表?
这可以转载如下:
ExampleStyles.css
.GreenItalic {
font-style: italic;
color: green;
}
Example.Rmd
---
output: html_document
css: ExampleStyles.css
---
# Heading { .GreenItalic }
使用RStudio进行编织(渲染)时,输出与预期一致。 “标题”用斜体和绿色表示。
要通过电子邮件发送,可以使用以下代码:
library(mailR)
library(knitr)
ReportName <- "Example"
knit2html(paste0(ReportName, ".Rmd"), options = "", styles = "ExampleStyles.css")
send.mail(from = "RTestingTesting@gmail.com",
to = "RTestingTesting@gmail.com",
subject = "Subject",
html = TRUE,
inline = TRUE,
body = paste0(ReportName, ".html"),
smtp = list(host.name = "smtp.gmail.com", port = 465, user.name = "RTestingTesting", passwd = "Password", ssl = TRUE),
authenticate = TRUE,
send = TRUE)
但是在这种情况下,输出为“Heading {.GreenItalic}”,为黑色和非斜体。据我所知,这是因为knitr正在使用RMarkdown v1。
答案 0 :(得分:4)
knitr::knit2html()
仅适用于记录的R Markdown v1。 knit2html()
的帮助页面中还记录了您应使用rmarkdown::render()
呈现R Markdown v2文档。
要关闭base64编码,您可以在YAML元数据中使用选项self_contained: no
,例如
---
output:
html_document:
self_contained: no
---
答案 1 :(得分:0)
我所做的一种解决方法/解决方案是设置参数:
onChildAdded()
(或为markdownToHTML选项选择自己的参数集,同时确保避免添加“ base64_images”)
这样,我设法发送了html并获得了报告,以在电子邮件的正文中显示报告中包含的图像。这些图像位于生成html的同一文件夹中。
我希望这会有所帮助。