更新:Brandon Bertelsenの答え:
ブランドンの答えは、次の出力を生成します。 Rstudioのようにニーステーブルやハイライトコードを生成せず、Unicodeを使用した一部のhtmlファイルでクラッシュするため、電子メールレポートの自動化には使用していません。
私の現在のアプローチは、Rstudioを使用してhtmlにコンパイルし、html文書をchromeで開いてから、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)
```
デフォルトのbase64エンコーディングはmailR
で動作しないため、self_contained: no
を使用しています( this SO post )でYihuiが推奨)
# 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)
両方のメールが正常に送信されます。
ニットされたメールは次のようになります。
rmarkdownメールは次のようになります。 (javascriptファイルの束も含まれていることに注意してください-それらを削除するには、いくつかのスクリプトを作成する必要があると思います)
しかし、どちらもRstudioの "Knit as HTML"から生成されるレポートのように見栄えがよく、次のようになります。
助言がありますか?
真の修正には、JavaScriptファイルを削除しながら、CSSスタイリングをメールに優しい方法で組み込むHTMLファイルのいくつかの後処理が必要になると思います。
ここでは、knitr
パッケージを使用します。
不明な点がある場合はお知らせください。質問を改善します。
関連するSO投稿:
主な問題は、メールリーダーがコードを削除し、外部からのインポートを許可しないことです。基本的な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 a python package残念ながら、それらはどれもブートストラップのような非常に複雑な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 = "[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)
免責事項:マイレージは、どのメールリーダーがターゲットかによって大きく異なる場合があります