更新:Brandon Bertelsen的回答:
布兰登的答案产生以下输出.它不会像Rstudio那样产生漂亮的表格或突出显示代码,并且它会在一些带有unicode的html文件上崩溃,因此我不会使用它来自动化我的电子邮件报告.
我目前的方法是使用Rstudio编译为html,在chrome中打开html文档,然后将html文档复制并粘贴到gmail中.这很好用,请看这个要点:https://gist.github.com/nelsonauner/a68b5a808c232ce7817e
原始问题:是否有一种简单的方法可以将R降价文档作为电子邮件正文发送,以便电子邮件的正文与使用Rstudio的"编织HTML"的结果类似?
这里有一个基本的可重复使用例子knitr
,rmarkdown
和mailR
--- title: "Report for email" output: html_document: self_contained: no --- ```{r} summary(cars) ``` You can also embed plots, for example: ```{r, echo=FALSE} plot(cars) ```
我正在使用,self_contained: no
因为默认的base64编码不起作用mailR
(Yihui在此SO帖子中推荐)
# compile using rmarkdown library(rmarkdown) rmarkdown::render("example.Rmd") library(mailR) send.mail(from = "me@gmail.com", to = "me@gmail.com", subject = "R Markdown Report - rmarkdown", html = T, inline = T, body = "example.html", smtp = list(host.name = "smtp.gmail.com", port = 465, user.name = "me", passwd = "password", ssl = T), authenticate = T, send = T) #compile using knitr library(knitr) knit2html("example.Rmd",options="") send.mail(from = "me@gmail.com", to = "me@gmail.com", subject = "R Markdown Report - knitr", html = T, inline = T, body = "example.html", smtp = list(host.name = "smtp.gmail.com", port = 465, user.name = "me", passwd = "password", ssl = T), authenticate = T, send = T)
两封电子邮件都成功发送.
针织电子邮件看起来像这样:
而rmarkdown电子邮件看起来像这样.(请注意,它还包含一堆javascript文件 - 我想我必须编写一些脚本来删除它们)
但是它们都不像Rstudio的"Knit as HTML"报告那样好看,它看起来像这样:
有什么建议?
我认为一个真正的修复可能涉及一些html文件的后处理,它以一种电子邮件友好的方式结合css样式,同时删除javascript文件.
现在,我将使用该knitr
包.
如果问题不清楚,请告诉我,我会改进这个问题.
相关的SO帖子:
在R有任何方法可以发送RMarkdown v2 html文件作为电子邮件的正文
mailR:如何在电子邮件中将rmarkdown文件作为正文发送?
主要问题是电子邮件阅读器剥离您的代码并且不允许外部导入.要获得基本的CSS支持,最好的策略是使用内联样式来获得一致的视图.我们将在一分钟内回过头来.
首先,您必须以不同的方式设置您的Rmd文档,因此它排除了所有额外的JavaScript文件.theme
,highlight
并且mathjax
都应该null
.请注意,我添加了一个css
属性.
--- title: "Report for email" output: html_document: self_contained: no theme: null highlight: null mathjax: null css: ink.css --- ```{r} summary(cars) ``` You can also embed plots, for example: ```{r, echo=FALSE} plot(cars) ```
ink.css
来自http://foundation.zurb.com/emails.我建议使用它作为基本主题.
你可以使用许多不同的脚本来"内联"你的css(这是一个动词),我在这里包含了使用premailer python包的说明.不幸的是,它们都不会像bootstrap那样支持非常复杂的CSS.因此,您只需要使用墨水或任何基础构建自己的风格.
您可能需要在Ubuntu上为我安装一些元素:
sudo apt-get install python-pip libxslt1-dev sudo pip install premailer
现在,你可以做这样的事情.
library(rmarkdown) library(mailR) rmarkdown::render("example.Rmd") system("python -m premailer -f example.html -o output.html") send.mail( from = "me@gmail.com", to = "me@gmail.com", subject = "R Markdown Report - rmarkdown", html = T, inline = T, body = "output.html", smtp = list( host.name = "smtp.gmail.com", port = 465, user.name = "me", passwd = "password", ssl = T), authenticate = T, send = T)
免责声明:根据您的目标电子邮件阅读器,您的里程可能会有很大差异