Constructing a MIME message


First we will construct a simple text only message

mime() %>%
  to("") %>%
  from("") %>%
  text_body("Gmailr is a very handy package!") -> text_msg

You can convert the message to a properly formatted MIME message using as.character().

## [1] "MIME-Version: 1.0\r Date: Mon, 11 Apr 2016 20:46:00 GMT\r To:"     
## [2] "\r From:\r Content-Type:" 
## [3] "multipart/mixed; boundary=7a7158ef20d03d5a44a25a71d47ebef6\r"      
## [4] "Content-Disposition: inline\r \r MIME-Version: 1.0\r Date: Mon, 11"
## [5] "Apr 2016 20:46:00 GMT\r Content-Type: text/plain; charset=utf-8;"  
## [6] "format=flowed\r Content-Transfer-Encoding: quoted-printable\r"     
## [7] "Content-Disposition: inline\r \r Gmailr is a very handy package!\r"
## [8] "--7a7158ef20d03d5a44a25a71d47ebef6--\r"


You can also construct html messages. It is customary to provide a text only message along with the html message, but with modern email clients this is not strictly necessary.

mime() %>%
  to("") %>%
  from("") %>%
  html_body("<b>Gmailr</b> is a <i>very</i> handy package!") -> html_msg


You can add attachments to your message in two ways.

  1. If the data is in a file, use attach_file(). The mime type is automatically guessed by mime::guess_type, or you can specify it yourself with the type parameter.
write.csv(file = "iris.csv", iris)

html_msg %>%
  subject("Here are some flowers") %>%
  attach_file("iris.csv") -> file_attachment
  1. If the data are already loaded into R, you can use attach_part() to attach the binary data to your file.
html_msg %>% attach_part(part = charToRaw("attach me!"), name = "please") -> simple_attachment


Create Draft

You can upload any mime message into your gmail drafts using create_draft(). Be sure to give yourself at least compose permissions first.



This inserts the message directly into your mailbox, bypassing gmail’s default scanning and classification algorithms.



This imports the email as though it was a normal message, with the same scanning and classification as normal email.




send_draft() sends an email using the draft_id of an existing draft (possibly created with create_draft()).

my_drafts <- drafts()

send_draft(id(my_drafts, "draft_id")[1])


You can also send an email message directly from a mime object using send_message().