r ईमेल के बॉडी में आर मार्कडाउन रिपोर्ट कैसे भेजें?



email knitr (1)

अपडेट करें: ब्रैंडन बर्टेलसन का जवाब:

ब्रैंडन का उत्तर निम्नलिखित आउटपुट उत्पन्न करता है। यह अच्छी टेबल या हाइलाइट कोड उत्पन्न नहीं करता है जैसे कि रुस्टूडियो करता है, और यह यूनिकोड के साथ कुछ एचटीएमएल फाइलों पर दुर्घटनाग्रस्त हो जाता है, इसलिए मैं इसे अपनी ईमेल रिपोर्ट स्वचालित करने के लिए उपयोग नहीं कर रहा हूं।

मेरा वर्तमान दृष्टिकोण Rstudio से एचटीएमएल में संकलित करना है, क्रोम में एचटीएमएल दस्तावेज़ खोलें, और उसके बाद एचटीएमएल दस्तावेज़ को जीमेल में कॉपी और पेस्ट करें। यह बहुत अच्छी तरह से काम करता है, इस जिस्ट को देखें: https://gist.github.com/nelsonauner/a68b5a808c232ce7817e

मूल प्रश्न:

क्या ईमेल के बॉडी के रूप में आर मार्कडाउन दस्तावेज़ भेजने का कोई आसान तरीका है, ताकि ईमेल का शरीर Rstudio के "बुना HTML" का उपयोग करने के परिणामों के समान दिखता हो?

knitr , rmarkdown , और mailR का उपयोग कर एक मूल पुनरुत्पादन उदाहरण यहां 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)
```

मैं self_contained: no का उपयोग कर रहा हूं self_contained: no चूंकि डिफ़ॉल्ट बेस 64 एन्कोडिंग mailR साथ काम नहीं करता है ( इस एसओ पोस्ट में mailR द्वारा अनुशंसित)

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)

दोनों ईमेल सफलतापूर्वक भेजते हैं।

बुना हुआ ईमेल इस तरह दिखता है:

और rmarkdown ईमेल इस तरह दिखता है। (ध्यान दें कि इसमें जावास्क्रिप्ट फ़ाइलों का एक गुच्छा भी शामिल है - मुझे लगता है कि मुझे उन्हें हटाने के लिए कुछ स्क्रिप्ट लिखनी होंगी)

लेकिन उनमें से कोई भी रस्टूडियो के "एचटी एचटीएमएल" से उत्पन्न रिपोर्ट के रूप में अच्छा नहीं दिखता है, जो इस तरह दिखता है:

कोई सुझाव?

मुझे लगता है कि एक सच्चे फिक्स में HTML फ़ाइल के कुछ पोस्टप्रोकैसिंग शामिल हो सकते हैं जो जावास्क्रिप्ट फ़ाइलों को हटाते समय एक ईमेल-अनुकूल तरीके से सीएसएस स्टाइल को शामिल करता है।

अभी के लिए, मैं knitr पैकेज का उपयोग करेंगे।

अगर कुछ स्पष्ट नहीं है तो कृपया मुझे बताएं और मैं सवाल में सुधार करूंगा।

प्रासंगिक एसओ पदों:

आर में एक ईमेल के शरीर के रूप में RMarkdown v2 html फ़ाइल भेजने का कोई तरीका है

मेलआर: ईमेल में बॉडी के रूप में रमार्कडाउन दस्तावेज़ कैसे भेजें?


मुख्य समस्या यह है कि ईमेल पाठक आपका कोड पट्टी करते हैं और बाहरी आयात की अनुमति नहीं देते हैं। बुनियादी सीएसएस समर्थन प्राप्त करने के लिए, सर्वोत्तम रणनीति रखने के लिए इनलाइन शैलियों का उपयोग करना सबसे अच्छी रणनीति है। हम एक मिनट में उस पर वापस सर्कल करेंगे।

सबसे पहले, आपको अपने आरएमडी दस्तावेज़ को थोड़ा अलग तरीके से सेट करना होगा ताकि इसमें सभी अतिरिक्त जावास्क्रिप्ट फ़ाइलों को शामिल किया जा सके। 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 से आता है। मैं इसे अपने मूल विषय के रूप में उपयोग करने की सलाह देते हैं।

ऐसी कई अलग-अलग स्क्रिप्ट्स हैं जिनका उपयोग आप अपने सीएसएस को "इनलाइन" करने के लिए कर सकते हैं (यह एक क्रिया है), मैंने premailer एक पायथन पैकेज का उपयोग करने के लिए यहां निर्देश शामिल किए हैं। दुर्भाग्यवश, उनमें से कोई भी बूटस्ट्रैप की तरह बहुत जटिल सीएसएस का समर्थन नहीं करेगा। तो आपको स्याही या अपनी नींव के रूप में जो कुछ भी बनाया गया है, उसे अपनी खुद की शैली के साथ करना होगा।

उबंटू पर मेरे लिए कुछ तत्व स्थापित करने की आवश्यकता हो सकती है:

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)

अस्वीकरण: आपका माइलेज कितना ईमेल पाठक आपका लक्ष्य है इस पर निर्भर करता है





r-markdown