The goal of mailtoR is to implement a personalized user interface for
emails sending within your Shiny applications and/or RMarkdown
documents. It’s a wrapper of the Mailtoui
JavaScript library.
You can install the mailtoR package from
CRAN with:
install.packages("mailtoR")
You can install the development version of mailtoR from Github with:
# install.packages("remotes")
# remotes::install_github("feddelegrand7/mailtoR")
install.packages("mailtoR", repos = c('https://feddelegrand7.r-universe.dev', 'https://cloud.r-project.org'))
The mailtoR package is composed of two functions:
use_mailtoR(): put this function at the end of your Shiny ui (doesn't matter in RMarkdown),
it activates the features of the
Mailtoui library;
mailtoR(): use this function to create as many email links as you
want (see examples below)
library(shiny)
library(mailtoR)
ui <- fluidPage(
mailtoR(email = "info@rstudio.com",
text = "Click here to send an email !"),
use_mailtoR()
)
server <- function(input, output) {}
shinyApp(ui = ui, server = server)

You can use many parameters to configure your email framework:
library(shiny)
library(mailtoR)
ui <- fluidPage(
mailtoR(email = "michaelscott@dundermifflin.org",
text = "click here to send an email",
subject = "URGENT",
cc = c("jimhalpert@dundermifflin.org", "dwightschrute@dundermifflin.org"),
body = "Hi Michaels, it's David Wallace, your branch needs to make more sales !!!!!!!"),
use_mailtoR()
)
server <- function(input, output) {}
shinyApp(ui = ui, server = server)

Using the glue package, you can ever create a reproducible text report that you’ll embed within your email:
library(shiny)
library(mailtoR)
ui <- fluidPage(
mailtoR(email = "random_person@random.org",
text = "click here to send an email",
subject = "Useful Information",
body = glue::glue(
"
Hi,
Did you know that the mtcars dataset has {nrow(mtcars)} rows and {ncol(mtcars)} columns ?
Best regards.
"
)),
use_mailtoR()
)
server <- function(input, output) {}
shinyApp(ui = ui, server = server)

If you want to send a vector of data you’ll need to use mailtoR in
conjunction with the jsonlite package.
library(shiny)
library(mailtoR)
library(jsonlite)
# converting our data to JSON format
vec <- toJSON(mtcars$mpg)
# reformat our results to make it prettier
vec_pretty <- prettify(vec)
ui <- fluidPage(
mailtoR(email = "random_person@random.org",
text = "click here to send an email",
subject = "Useful Information",
body = glue::glue(
"
Hi,
Below you'll find the mpg column of the mtcars data frame:
{vec_pretty}
Best regards
"
)),
use_mailtoR()
)
server <- function(input, output) {}
shinyApp(ui = ui, server = server)

Please note that the mailtoR project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.