From abd8b7ada8445d1ea88889428af571cd02021599 Mon Sep 17 00:00:00 2001 From: "Allan V. C. Quadros" Date: Sun, 17 Dec 2023 01:16:22 -0600 Subject: [PATCH] v1.1.2-CRAN --- DESCRIPTION | 11 +++-- NEWS.md | 10 ++++ R/R6.R | 13 ++++-- R/clean-fetch-results.R | 16 +++---- R/execute-attachment-fetch.R | 64 +++++++++++++------------ R/fetch-attachments-int.R | 6 ++- R/get-attachments-int.R | 65 +++++++++++++++----------- docs/articles/basics.html | 4 +- docs/articles/code_migration.html | 4 +- docs/articles/index.html | 2 +- docs/articles/xoauth2.0.html | 4 +- docs/authors.html | 10 +++- docs/index.html | 3 +- docs/news/index.html | 34 +++++++++++--- docs/pkgdown.yml | 2 +- docs/reference/AND.html | 4 +- docs/reference/ImapCon.html | 16 +++++-- docs/reference/OR.html | 4 +- docs/reference/before.html | 4 +- docs/reference/configure_imap.html | 4 +- docs/reference/decode_mime_header.html | 4 +- docs/reference/flag.html | 4 +- docs/reference/index.html | 2 +- docs/reference/larger_than.html | 4 +- docs/reference/list_attachments.html | 4 +- docs/reference/mRpostman-package.html | 2 +- docs/reference/metadata_options.html | 4 +- docs/reference/older_than.html | 4 +- docs/reference/on.html | 4 +- docs/reference/pipe.html | 4 +- docs/reference/sent_before.html | 4 +- docs/reference/sent_on.html | 4 +- docs/reference/sent_since.html | 4 +- docs/reference/since.html | 4 +- docs/reference/smaller_than.html | 4 +- docs/reference/string.html | 4 +- docs/reference/younger_than.html | 4 +- man/ImapCon.Rd | 12 ++++- 38 files changed, 222 insertions(+), 134 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index cd5c9fb..9ee212a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,13 +1,18 @@ Package: mRpostman Type: Package Title: An IMAP Client for R -Version: 1.1.1 -Date: 2023-07-27 +Version: 1.1.2 +Date: 2023-12-17 Authors@R: c( person(given="Allan", family="Quadros", role = c("aut", "cre"), email = "allanvcq@gmail.com", - comment = c(ORCID = "0000-0003-3250-5380"))) + comment = c(ORCID = "0000-0003-3250-5380")), + person(given="Paul", family="Smith", + role = c("ctb")), + person(given="Kurt", family="Hornik", + role = c("ctb")) + ) Description: An easy-to-use IMAP client that provides tools for message searching, selective fetching of message attributes, mailbox management, attachment extraction, and several other IMAP features, paving the way for e-mail data analysis in R. diff --git a/NEWS.md b/NEWS.md index e841d2e..64fec4b 100755 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,13 @@ +## mRpostman 1.1.2 (2023-12-17 CRAN update) + +### Methods & Functions + +- `clean_fetch_results()`: added argument `useBytes = TRUE` to all `gsub()` calls. According to Kurt Hornik, "fetching fails using current versions of R for some contents with non-ASCII characters". + +- Added bypass argument `as_is` to methods/functions `get_attachments()`, `execute_fetch_attachments()`, `fetch_attachments()`; and `as_is` functionality to `get_attachments()` and `execute_fetch_attachments` as proposed by Pauls Smith to handle non-base64 files. + +--- + ## mRpostman 1.1.1 (2023-07-27 Github patch) ### Documentation diff --git a/R/R6.R b/R/R6.R index 3bb20cb..b0f3cd7 100644 --- a/R/R6.R +++ b/R/R6.R @@ -1681,6 +1681,8 @@ ImapCon <- R6::R6Class("ImapCon", #' command is successfully executed. Default is \code{FALSE}. #' @param mute A \code{logical}. If \code{TRUE}, mutes the confirmation message #' when the command is successfully executed. Default is \code{FALSE}. + #' @param as_is If \code{TRUE} then write out attachments without base64 + #' decoding. Default is \code{FALSE}. #' @note \href{#method-get_attachments}{\code{ImapCon$get_attachments()}}: #' This method is to be used after the body or the #' text part of one or more messages were fetched. This makes sense if the @@ -1730,9 +1732,9 @@ ImapCon <- R6::R6Class("ImapCon", #' con$get_attachments(msg_list = out) #' } get_attachments = function(msg_list, content_disposition = "both", - override = FALSE, mute = FALSE) { + override = FALSE, mute = FALSE, as_is = FALSE) { out <- get_attachments_int(self, msg_list, content_disposition, override, - mute) + mute, as_is) invisible(out) @@ -1797,6 +1799,8 @@ ImapCon <- R6::R6Class("ImapCon", #' when the command is successfully executed. Default is \code{FALSE}. #' @param retries Number of attempts to connect and execute the command. Default #' is \code{1}. + #' @param as_is If \code{TRUE} then write out attachments without base64 + #' decoding. Default is \code{FALSE}. #' @note \href{#method-fetch_attachments}{\code{ImapCon$fetch_attachments()}}: All #' attachments will be stored in a folder labeled with the message id #' inside the \code{working directory > servername > foldername}. @@ -1836,9 +1840,10 @@ ImapCon <- R6::R6Class("ImapCon", #' #' } fetch_attachments = function(msg_id, use_uid = FALSE, content_disposition = "both", - override = FALSE, mute = FALSE, retries = 1) { + override = FALSE, mute = FALSE, retries = 1, + as_is = FALSE) { out <- fetch_attachments_int(self, msg_id, use_uid, content_disposition, - override, mute, retries) + override, mute, retries, as_is) invisible(out) diff --git a/R/clean-fetch-results.R b/R/clean-fetch-results.R index 4a24da9..b8f6af9 100644 --- a/R/clean-fetch-results.R +++ b/R/clean-fetch-results.R @@ -6,24 +6,24 @@ clean_fetch_results <- function(msg_text, metadata_attribute = NULL, attachment_ pattern1 = "\\* \\d+ FETCH.*BODY.*\\{\\d+\\}\r\n" # result <- stringr::str_remove(string = msg_text, pattern = pattern1) - result <- gsub(pattern1, "", msg_text, ignore.case = TRUE) + result <- gsub(pattern1, "", msg_text, ignore.case = TRUE, useBytes = TRUE) pattern2 = "\\)\r\n[A-Z]\\d+ OK Success\r\n" # result <- stringr::str_remove(string = result, pattern = pattern2) - result <- gsub(pattern2, "", result, ignore.case = TRUE) + result <- gsub(pattern2, "", result, ignore.case = TRUE, useBytes = TRUE) pattern3 = "\\)\r\n[A-Z]\\d+ OK FETCH completed.\r\n" #MS Exchange and yandex # result <- stringr::str_remove(string = result, pattern = pattern3) - result <- gsub(pattern3, "", result, ignore.case = TRUE) + result <- gsub(pattern3, "", result, ignore.case = TRUE, useBytes = TRUE) # attachments pattern4 = "\\)\r\n[A-Z]\\d+ OK FETCH completed\r\n" #MS Exchange # result <- stringr::str_remove(string = result, pattern = pattern3) - result <- gsub(pattern4, "", result, ignore.case = TRUE) + result <- gsub(pattern4, "", result, ignore.case = TRUE, useBytes = TRUE) pattern5 = "\r\n UID \\d+ FLAGS \\(.*\\)" #MS Exchange # important for attachments fetching # result <- stringr::str_remove(string = result, pattern = pattern3) - result <- gsub(pattern5, "", result, ignore.case = TRUE) + result <- gsub(pattern5, "", result, ignore.case = TRUE, useBytes = TRUE) # pattern5 = "\r\n \\d+ FLAGS \\(.*\\)" #MS Exchange # # result <- stringr::str_remove(string = result, pattern = pattern3) @@ -33,15 +33,15 @@ clean_fetch_results <- function(msg_text, metadata_attribute = NULL, attachment_ if (!is.null(metadata_attribute) && (!any(metadata_attribute == "UID" || metadata_attribute == "uid"))) { pattern6 = "UID \\d+$| UID \\d+$" # result <- stringr::str_remove(string = result, pattern = pattern2) - result <- gsub(pattern6, "", result, ignore.case = TRUE) + result <- gsub(pattern6, "", result, ignore.case = TRUE, useBytes = TRUE) } pattern7 = "^\\* \\d+ FETCH \\(" # important for fetch_metadata() - result <- gsub(pattern7, "", result, ignore.case = TRUE) + result <- gsub(pattern7, "", result, ignore.case = TRUE, useBytes = TRUE) if (isTRUE(attachment_fetch)) { # in order to not have problem with fetcH_body/text + get_attachments() combo pattern8 = "==\r\n FLAGS \\((.*?)\\)|=\r\n FLAGS \\((.*?)\\)" # important for fetch_attachments with use_uid = FALSE - it returns the msg flags after the attachment part on Office 365 - result <- gsub(pattern8, "", result, ignore.case = TRUE) + result <- gsub(pattern8, "", result, ignore.case = TRUE, useBytes = TRUE) } diff --git a/R/execute-attachment-fetch.R b/R/execute-attachment-fetch.R index b29e8fa..1801ef5 100644 --- a/R/execute-attachment-fetch.R +++ b/R/execute-attachment-fetch.R @@ -19,10 +19,12 @@ #' name, which will be uses to create a local folder. #' @param retries Number of attempts to connect and execute the command. Default #' is \code{1}. +#' @param as_is If \code{TRUE} then write out attachments without base64 +#' decoding. Default is \code{FALSE}. #' @noRd execute_attachment_fetch <- function(self, id, id_folder, df_meta_to_fetch, fetch_request, folder_clean, content_disposition, - override, retries) { + override, retries, as_is) { url <- self$con_params$url @@ -183,34 +185,38 @@ execute_attachment_fetch <- function(self, id, id_folder, df_meta_to_fetch, fetc # # base64 encoding # if (encodings[i] == "base64") { - # saving attachments - # thank's to: - # https://stackoverflow.com/questions/36708191/convert-base64-to-png-jpeg-file-in-r - # writing binary file - temp_bin_name <- paste0(sample(letters, 4), sample(0:9, 4), collapse="") - conn <- file(paste0(complete_path, "/", temp_bin_name, ".bin"),"wb") - writeBin(attachment, conn) - close(conn) - # decoding from BIN to the appropriate file extension - inconn <- file(paste0(complete_path, "/", temp_bin_name, ".bin"),"rb") - outconn <- file(complete_path_with_filename,"wb") - - # base64 text decoding - tryCatch({ - base64enc::base64decode(what=inconn, output=outconn) - }, error = function(e) { - warning(paste0("Base64 text decoding failed for", df_meta_to_fetch$filenames[i])) - }) - - close(inconn) - close(outconn) - - unlink(paste0(complete_path, "/", temp_bin_name, ".bin")) # deleting binary file - # From unlink() help: Not deleting a non-existent file is not a failure - # we don't need a tryCatch() - - # } - + if (as_is) { + ## write out the file directly to the final file name + writeBin(attachment, complete_path_with_filename) + } else { + # saving attachments + # thank's to: + # https://stackoverflow.com/questions/36708191/convert-base64-to-png-jpeg-file-in-r + # writing binary file + temp_bin_name <- paste0(sample(letters, 4), sample(0:9, 4), collapse="") + conn <- file(paste0(complete_path, "/", temp_bin_name, ".bin"),"wb") + writeBin(attachment, conn) + close(conn) + # decoding from BIN to the appropriate file extension + inconn <- file(paste0(complete_path, "/", temp_bin_name, ".bin"),"rb") + outconn <- file(complete_path_with_filename,"wb") + + # base64 text decoding + tryCatch({ + base64enc::base64decode(what=inconn, output=outconn) + }, error = function(e) { + warning(paste0("Base64 text decoding failed for", df_meta_to_fetch$filenames[i])) + }) + + close(inconn) + close(outconn) + + unlink(paste0(complete_path, "/", temp_bin_name, ".bin")) # deleting binary file + # From unlink() help: Not deleting a non-existent file is not a failure + # we don't need a tryCatch() + + # } + } } diff --git a/R/fetch-attachments-int.R b/R/fetch-attachments-int.R index 54c2348..faf38fa 100644 --- a/R/fetch-attachments-int.R +++ b/R/fetch-attachments-int.R @@ -17,9 +17,11 @@ #' containing the same name in the local directory. Default is \code{FALSE}. #' @param mute A \code{logical}. If \code{TRUE}, mutes the confirmation message #' when the command is successfully executed. Default is \code{FALSE}. +#' @param as_is If \code{TRUE} then write out attachments without base64 +#' decoding. Default is \code{FALSE}. #' @noRd fetch_attachments_int <- function(self, msg_id, use_uid, content_disposition, override, - mute, retries) { + mute, retries, as_is) { #check check_args(msg_id = msg_id, use_uid = use_uid, content_disposition = content_disposition, @@ -104,7 +106,7 @@ fetch_attachments_int <- function(self, msg_id, use_uid, content_disposition, ov if (nrow(df_meta_to_fetch) > 0) { execute_attachment_fetch(self, id, id_folder, df_meta_to_fetch, fetch_request, folder_clean, content_disposition, - override, retries) + override, retries, as_is) } # if not, do nothing } #if not, do nothing diff --git a/R/get-attachments-int.R b/R/get-attachments-int.R index 9baa177..42587ce 100644 --- a/R/get-attachments-int.R +++ b/R/get-attachments-int.R @@ -10,9 +10,11 @@ #' containing the same name in the local directory. Default is \code{FALSE}. #' @param mute A \code{logical}. If \code{TRUE}, mutes the confirmation message #' when the command is successfully executed. Default is \code{FALSE}. +#' @param as_is If \code{TRUE} then write out attachments without base64 +#' decoding. Default is \code{FALSE}. #' @noRd get_attachments_int <- function(self, msg_list, content_disposition, override, - mute) { + mute, as_is) { # previous folder selection checking if (is.na(self$con_params$folder)) { @@ -190,31 +192,42 @@ get_attachments_int <- function(self, msg_list, content_disposition, override, # complete_path_with_filename <- serialize_filename( # prefix = paste0(complete_path, "/", filenames[i])) - # saving attachments - # thank's to: - # https://stackoverflow.com/questions/36708191/convert-base64-to-png-jpeg-file-in-r - # writing binary file - temp_bin_name <- paste0(sample(letters, 4), sample(0:9, 4), collapse="") - conn <- file(paste0(complete_path, "/", temp_bin_name, ".bin"),"wb") - writeBin(attachments_text[i], conn) - close(conn) - # decoding from BIN to the appropriate file extension - inconn <- file(paste0(complete_path, "/", temp_bin_name, ".bin"),"rb") - outconn <- file(complete_path_with_filename,"wb") - - # base64 text decoding - tryCatch({ - base64enc::base64decode(what=inconn, output=outconn) - }, error = function(e) { - warning(paste0("Base64 text decoding failed for", adjusted_filenames[i])) - }) - - close(inconn) - close(outconn) - - unlink(paste0(complete_path, "/", temp_bin_name, ".bin")) # deleting binary file - # From unlink() help: Not deleting a non-existent file is not a failure - # we don't need a tryCatch() + # bypass proposed by @waternumbers at https://github.com/allanvc/mRpostman/pull/8 + # It was originally proposed to fecth_attachments(), but ... + # I incorporated it in get_attachments() as well + if (as_is) { + ## write out the file directly to the final file name + writeBin(attachments_text[i], complete_path_with_filename) + } else { + # saving attachments + # thank's to: + # https://stackoverflow.com/questions/36708191/convert-base64-to-png-jpeg-file-in-r + # writing binary file + temp_bin_name <- paste0(sample(letters, 4), sample(0:9, 4), collapse="") + conn <- file(paste0(complete_path, "/", temp_bin_name, ".bin"),"wb") + writeBin(attachments_text[i], conn) + close(conn) + # decoding from BIN to the appropriate file extension + inconn <- file(paste0(complete_path, "/", temp_bin_name, ".bin"),"rb") + outconn <- file(complete_path_with_filename,"wb") + + # base64 text decoding + tryCatch({ + base64enc::base64decode(what=inconn, output=outconn) + }, error = function(e) { + warning(paste0("Base64 text decoding failed for", adjusted_filenames[i])) + }) + + close(inconn) + close(outconn) + + unlink(paste0(complete_path, "/", temp_bin_name, ".bin")) # deleting binary file + # From unlink() help: Not deleting a non-existent file is not a failure + # we don't need a tryCatch() + + + } + } diff --git a/docs/articles/basics.html b/docs/articles/basics.html index 6cba432..e48dc02 100644 --- a/docs/articles/basics.html +++ b/docs/articles/basics.html @@ -38,7 +38,7 @@ mRpostman - 1.1.1 + 1.1.2 @@ -98,7 +98,7 @@

mRpostman basics

- Source: vignettes/basics.Rmd + Source: vignettes/basics.Rmd diff --git a/docs/articles/code_migration.html b/docs/articles/code_migration.html index 5620ee5..a4fc3ed 100644 --- a/docs/articles/code_migration.html +++ b/docs/articles/code_migration.html @@ -38,7 +38,7 @@ mRpostman - 1.1.1 + 1.1.2 @@ -99,7 +99,7 @@

Migrating old code to the new mRpostman’s syntax

- Source: vignettes/code_migration.Rmd + Source: vignettes/code_migration.Rmd diff --git a/docs/articles/index.html b/docs/articles/index.html index 5a4c26d..5176812 100644 --- a/docs/articles/index.html +++ b/docs/articles/index.html @@ -79,7 +79,7 @@ mRpostman - 1.1.1 + 1.1.2 diff --git a/docs/articles/xoauth2.0.html b/docs/articles/xoauth2.0.html index 951df74..d123a77 100644 --- a/docs/articles/xoauth2.0.html +++ b/docs/articles/xoauth2.0.html @@ -38,7 +38,7 @@ mRpostman - 1.1.1 + 1.1.2 @@ -98,7 +98,7 @@

IMAP OAuth2.0 authentication in mRpostman

- Source: vignettes/xoauth2.0.Rmd + Source: vignettes/xoauth2.0.Rmd diff --git a/docs/authors.html b/docs/authors.html index 5c9bceb..5443d43 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -79,7 +79,7 @@ mRpostman - 1.1.1 + 1.1.2 @@ -144,6 +144,14 @@

Authors

Allan Quadros. Author, maintainer.

+
  • +

    Paul Smith. Contributor. +

    +
  • +
  • +

    Kurt Hornik. Contributor. +

    +
  • diff --git a/docs/index.html b/docs/index.html index 532e58e..b6632ae 100644 --- a/docs/index.html +++ b/docs/index.html @@ -40,7 +40,7 @@ mRpostman - 1.1.1 + 1.1.2 @@ -478,6 +478,7 @@

    License

    Developers

    diff --git a/docs/news/index.html b/docs/news/index.html index 39c6466..b43fd8c 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -79,7 +79,7 @@ mRpostman - 1.1.1 + 1.1.2 @@ -137,9 +137,31 @@
    +
    +

    +mRpostman 1.1.2 (2023-12-17 CRAN update)

    +
    +

    +Methods & Functions

    +
      +
    • clean_fetch_results(): added argument +useBytes = TRUE to all gsub() calls. According +to Kurt Hornik, “fetching fails using current versions of R for some +contents with non-ASCII characters”.

    • +
    • Added bypass argument as_is to methods/functions +get_attachments(), +execute_fetch_attachments(), +fetch_attachments(); and as_is functionality +to get_attachments() and +execute_fetch_attachments as proposed by Pauls Smith to +handle non-base64 files.

    • +
    +
    +
    +

    mRpostman 1.1.1 (2023-07-27 Github patch)

    @@ -166,9 +188,9 @@

    www.rfc-editor.org/rfc/…)

    -
    +

    -Methods & Functions

    +Methods & Functions
    • updated completion msg in all fetch methods to: "\n::mRpostman: fetch operation is complete.\n" @@ -190,9 +212,9 @@

    -
    +

    -Methods & Functions

    +Methods & Functions
    • updated completion msg in all fetch methods to: "\n::mRpostman: fetch operation is complete.\n" diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 26cd3cd..1dfea3b 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -5,5 +5,5 @@ articles: basics: basics.html code_migration: code_migration.html xoauth2.0: xoauth2.0.html -last_built: 2023-07-28T15:23Z +last_built: 2023-12-17T07:13Z diff --git a/docs/reference/AND.html b/docs/reference/AND.html index 3a9fa48..5e6f3a3 100644 --- a/docs/reference/AND.html +++ b/docs/reference/AND.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/docs/reference/ImapCon.html b/docs/reference/ImapCon.html index 5b51876..708b873 100644 --- a/docs/reference/ImapCon.html +++ b/docs/reference/ImapCon.html @@ -81,7 +81,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -139,7 +139,7 @@
    @@ -2282,7 +2282,8 @@

    Exa msg_list, content_disposition = "both", override = FALSE, - mute = FALSE + mute = FALSE, + as_is = FALSE )

    Arguments

    @@ -2302,6 +2303,9 @@

    Arg
    mute

    A logical. If TRUE, mutes the confirmation message when the command is successfully executed. Default is FALSE.

    +
    as_is

    If TRUE then write out attachments without base64 +decoding. Default is FALSE.

    +

    Returns

    TRUE if the operation is successful. The files are saved @@ -2369,7 +2373,8 @@

    Exa content_disposition = "both", override = FALSE, mute = FALSE, - retries = 1 + retries = 1, + as_is = FALSE )

    Arguments

    @@ -2399,6 +2404,9 @@

    Arg
    retries

    Number of attempts to connect and execute the command. Default is 1.

    +
    as_is

    If TRUE then write out attachments without base64 +decoding. Default is FALSE.

    +

    Returns

    A list with the fetch contents.

    diff --git a/docs/reference/OR.html b/docs/reference/OR.html index 4e54e50..ddf6f3b 100644 --- a/docs/reference/OR.html +++ b/docs/reference/OR.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2 @@ -138,7 +138,7 @@
    diff --git a/docs/reference/before.html b/docs/reference/before.html index c6f14ae..7858217 100644 --- a/docs/reference/before.html +++ b/docs/reference/before.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/docs/reference/configure_imap.html b/docs/reference/configure_imap.html index cbc012d..e56eaff 100644 --- a/docs/reference/configure_imap.html +++ b/docs/reference/configure_imap.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/docs/reference/decode_mime_header.html b/docs/reference/decode_mime_header.html index 63c2cb4..0f3c454 100644 --- a/docs/reference/decode_mime_header.html +++ b/docs/reference/decode_mime_header.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/docs/reference/flag.html b/docs/reference/flag.html index 5736627..735f80e 100644 --- a/docs/reference/flag.html +++ b/docs/reference/flag.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/docs/reference/index.html b/docs/reference/index.html index 8d04e16..2183bde 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -79,7 +79,7 @@ mRpostman - 1.1.1 + 1.1.2
    diff --git a/docs/reference/larger_than.html b/docs/reference/larger_than.html index e407292..82e1af1 100644 --- a/docs/reference/larger_than.html +++ b/docs/reference/larger_than.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2 @@ -138,7 +138,7 @@
    diff --git a/docs/reference/list_attachments.html b/docs/reference/list_attachments.html index f43a3b6..dc6c11f 100644 --- a/docs/reference/list_attachments.html +++ b/docs/reference/list_attachments.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/docs/reference/mRpostman-package.html b/docs/reference/mRpostman-package.html index dc6c98c..86d51de 100644 --- a/docs/reference/mRpostman-package.html +++ b/docs/reference/mRpostman-package.html @@ -82,7 +82,7 @@ mRpostman - 1.1.1 + 1.1.2
    diff --git a/docs/reference/metadata_options.html b/docs/reference/metadata_options.html index 6717147..4e6677c 100644 --- a/docs/reference/metadata_options.html +++ b/docs/reference/metadata_options.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2 @@ -138,7 +138,7 @@
    diff --git a/docs/reference/older_than.html b/docs/reference/older_than.html index 661863b..6baaebc 100644 --- a/docs/reference/older_than.html +++ b/docs/reference/older_than.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/docs/reference/on.html b/docs/reference/on.html index 63cf7c6..3d84c24 100644 --- a/docs/reference/on.html +++ b/docs/reference/on.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/docs/reference/pipe.html b/docs/reference/pipe.html index c331d89..60f0503 100644 --- a/docs/reference/pipe.html +++ b/docs/reference/pipe.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/docs/reference/sent_before.html b/docs/reference/sent_before.html index 4ba0b4c..84b1b36 100644 --- a/docs/reference/sent_before.html +++ b/docs/reference/sent_before.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/docs/reference/sent_on.html b/docs/reference/sent_on.html index e3d44cc..7c1132c 100644 --- a/docs/reference/sent_on.html +++ b/docs/reference/sent_on.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/docs/reference/sent_since.html b/docs/reference/sent_since.html index c73b35d..d648950 100644 --- a/docs/reference/sent_since.html +++ b/docs/reference/sent_since.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/docs/reference/since.html b/docs/reference/since.html index 5d9bbdb..d9e530a 100644 --- a/docs/reference/since.html +++ b/docs/reference/since.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/docs/reference/smaller_than.html b/docs/reference/smaller_than.html index 80ed195..a64efde 100644 --- a/docs/reference/smaller_than.html +++ b/docs/reference/smaller_than.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/docs/reference/string.html b/docs/reference/string.html index 9184623..31478e0 100644 --- a/docs/reference/string.html +++ b/docs/reference/string.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/docs/reference/younger_than.html b/docs/reference/younger_than.html index 25d6717..e8c0f1f 100644 --- a/docs/reference/younger_than.html +++ b/docs/reference/younger_than.html @@ -80,7 +80,7 @@ mRpostman - 1.1.1 + 1.1.2
    @@ -138,7 +138,7 @@
    diff --git a/man/ImapCon.Rd b/man/ImapCon.Rd index 7847ba2..5974fbd 100644 --- a/man/ImapCon.Rd +++ b/man/ImapCon.Rd @@ -3174,7 +3174,8 @@ Extract attached file(s) from fetched message(s) msg_list, content_disposition = "both", override = FALSE, - mute = FALSE + mute = FALSE, + as_is = FALSE )}\if{html}{\out{
    }} } @@ -3195,6 +3196,9 @@ command is successfully executed. Default is \code{FALSE}.} \item{\code{mute}}{A \code{logical}. If \code{TRUE}, mutes the confirmation message when the command is successfully executed. Default is \code{FALSE}.} + +\item{\code{as_is}}{If \code{TRUE} then write out attachments without base64 +decoding. Default is \code{FALSE}.} } \if{html}{\out{}} } @@ -3285,7 +3289,8 @@ Fetch message attachments content_disposition = "both", override = FALSE, mute = FALSE, - retries = 1 + retries = 1, + as_is = FALSE )}\if{html}{\out{}} } @@ -3316,6 +3321,9 @@ when the command is successfully executed. Default is \code{FALSE}.} \item{\code{retries}}{Number of attempts to connect and execute the command. Default is \code{1}.} + +\item{\code{as_is}}{If \code{TRUE} then write out attachments without base64 +decoding. Default is \code{FALSE}.} } \if{html}{\out{}} }