tutorial por pasos para otro enviar electrónico electronico documento desde cómo correo computador como archivo adjunto r email knitr r-markdown

por - ¿Cómo enviar un informe de rebajas R en el cuerpo del correo electrónico?



pasos para enviar un correo electronico (1)

actualización: la respuesta de Brandon Bertelsen:

La respuesta de Brandon produce la siguiente salida. No produce buenas tablas ni resalta el código como lo hace Rstudio, y se cuelga en algunos archivos html con Unicode, por lo que no lo estoy usando para automatizar mis informes de correo electrónico.

Mi enfoque actual es compilar con Rstudio a html, abrir el documento html en chrome, y luego copiar y pegar el documento html en gmail. Esto funciona bastante bien, mira esta idea: https://gist.github.com/nelsonauner/a68b5a808c232ce7817e

pregunta original:

¿Existe una manera fácil de enviar un documento de R de rebajas como el cuerpo de un correo electrónico, para que el cuerpo del correo electrónico se vea similar a los resultados del uso del "Knit HTML" de Rstudio?

Aquí hay un ejemplo básico reproducible utilizando knitr , rmarkdown y mailR

ejemplo.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) ```

Estoy usando self_contained: no ya que la codificación base64 predeterminada no funciona con mailR (recomendado por Yihui en esta publicación de SO )

knit_and_send.R

# compile using rmarkdown library(rmarkdown) rmarkdown::render("example.Rmd") library(mailR) send.mail(from = "[email protected]", to = "[email protected]", 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 = "[email protected]", to = "[email protected]", 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)

Ambos correos electrónicos se envían con éxito.

El correo electrónico de punto se ve así:

y el correo electrónico de rmarkdown se ve así. (Tenga en cuenta que también incluye un montón de archivos javascript; creo que tendré que escribir algunos scripts para eliminarlos)

Pero ninguno de ellos se ve tan bien como el informe que se produce a partir de "Knit as HTML" de Rstudio, que se ve así:

¿Alguna sugerencia?

Creo que una verdadera solución podría implicar algún procesamiento posterior del archivo html que incorpore el estilo css de forma amigable con el correo electrónico mientras se eliminan los archivos javascript.

Por ahora, knitr paquete knitr .

Por favor, avíseme si algo no está claro y mejoraré la pregunta.

Publicaciones SO relevantes:

En R hay alguna forma de enviar un archivo RMarkdown v2 html como el cuerpo de un correo electrónico

mailR: ¿cómo enviar documentos de rmarkdown como cuerpo en el correo electrónico?


El principal problema es que los lectores de correo electrónico quitan su código y no permiten las importaciones externas. Para obtener soporte básico de CSS, la mejor estrategia es usar estilos en línea para tener una vista consistente. Regresaremos a eso en un minuto.

En primer lugar, debe configurar su documento Rmd un poco diferente para que excluya todos los archivos javascript adicionales. theme , highlight y mathjax deberían ser null . Aviso, he agregado un atributo 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 proviene de http://foundation.zurb.com/emails . Recomiendo usar esto como su tema base.

Hay una serie de secuencias de comandos diferentes que puede utilizar para "en línea" su CSS (que es un verbo), he incluido instrucciones aquí para usar premailer un paquete de Python. Desafortunadamente, ninguno de ellos soportará CSS muy complicado como bootstrap. Entonces solo tendrá que conformarse con su propio estilo creado con tinta o lo que sea como base.

Es posible que necesite instalar algunos elementos para mí en Ubuntu:

sudo apt-get install python-pip libxslt1-dev sudo pip install premailer

Ahora, puedes hacer algo como esto.

library(rmarkdown) library(mailR) rmarkdown::render("example.Rmd") system("python -m premailer -f example.html -o output.html") send.mail( from = "[email protected]", to = "[email protected]", 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)

DESCARGO DE RESPONSABILIDAD: Su kilometraje puede variar enormemente dependiendo de qué lector de correo electrónico sea su objetivo