The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
Mail merge from R using markdown documents and gmail.
yaml
header to specify the subject line of the
emailglue
to replace {}
tagsgmailr
Note: Right now, the only supported email back end is
gmailr
(see https://gmailr.r-lib.org/).
Install the package from CRAN:
install.packages("mailmerge")
Install the dev version from https://github.com/andrie/mailmerge
::install_github("andrie/mailmerge") remotes
At the moment only gmail is supported as the email back-end, using
the gmailr
package (https://github.com/r-lib/gmailr).
Before you use mail_merge()
it’s important to
authenticate against the gmail service, and you should use
gmailr::gm_auth()
to do this.
Construct a data frame with the content you want to merge into your email:
<- data.frame(
dat email = c("friend@example.com", "foe@example.com"),
first_name = c("friend", "foe"),
thing = c("something good", "something bad"),
stringsAsFactors = FALSE
)
Write the text of your email as a R markdown document. You can add
the subject line in the yaml header. Use {}
braces inside
the email to refer to the data inside your data frame. Expressions
inside these braces will be encoded by the
glue::glue_data()
function (See https://glue.tidyverse.org/).
<- '
msg ---
subject: "**Hello, {first_name}**"
---
Hi, **{first_name}**
I am writing to tell you about **{thing}**.
{if (first_name == "friend") "Regards" else ""}
Me
'
Then you can use mail_merge()
to embed the content of
your data frame into the email message. By default the email will be
shown in a preview window (in the RStudio viewer pane, if you use
RStudio).
To send the message, use send = "draft"
(to save in your
gmail drafts folder) or send = "immediately"
to send the
mail immediately.
library(mailmerge)
library(gmailr, quietly = TRUE, warn.conflicts = FALSE)
if (interactive()) {
# Note: you should always authenticate. The 'interactive()` condition only
# prevents execution on the CRAN servers
gm_auth()
}
%>%
dat mail_merge(msg)
#> Sent preview to viewer
if (interactive()) {
%>%
dat mail_merge(msg) %>%
print()
}
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.