update: Brandon Bertelsen's answer:
Brandon's answer produces the following output. It doesn't produce nice tables or highlight code like Rstudio does, and it crashes on some html files with unicode, so I'm not using it to automate my email reports.
My current approach is to compile with Rstudio to html, open the html document in chrome, and then copy and paste the html document into gmail. This works pretty well, see this gist: https://gist.github.com/nelsonauner/a68b5a808c232ce7817e
Original question:
Is there an easy way to send an R markdown document as the body of an email, so that the body of the email looks similar to the results of using Rstudio's "Knit HTML" ?
Here's a basic reproducible example using knitr
, rmarkdown
, and mailR
example.Rmd
---
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)
```
I'm using self_contained: no
since the default base64 encoding does not work with mailR
(recommended by Yihui in this SO post)
knit_and_send.R
# 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)
Both emails send successfully.
The knitted email looks like this:
and the rmarkdown email looks like this. (Notice that it also includes a bunch of javascript files--I think I'd have to write some scripts to remove them)
But neither of them look as nice as the report that is produced from Rstudio's "Knit as HTML", which looks like this:
Any suggestions?
I think a true fix might involve some postprocessing of the html file that incorporate the css styling in an email-friendly way while removing the javascript files.
For now, I'll use the knitr
package.
Please let me know if something isn't clear and I'll improve the question.
Relevant SO posts:
In R is there any way to send an RMarkdown v2 html file as the body of an email
mailR: how to send rmarkdown documents as body in email?