Как отправить почту через SMTPS, используя пакет curl в R?

#r #email #curl #libcurl #smtps

#r #Адрес электронной почты #curl #libcurl #smtps

Вопрос:

Я хотел бы отправить почту, используя SMTPS в R. В настоящее время ни один из доступных пакетов не поддерживает отправку почты через TLS ( rmail amp; sendmaileR ) или они имеют сложную в установке зависимость от Java ( mailr ). Я попытался использовать curl, и мне удалось отправить письмо, используя следующий фрагмент кода:

 curl --url 'smtps://mail.server.com:465' --ssl-reqd --mail-from 'mail1@example.com' --mail-rcpt 'mail2@example.com' --upload-file mail.txt --user 'user:password'
  

К сожалению, я не смог перевести этот фрагмент на R, используя пакет brilliant curl . Хотя мне удалось найти все варианты, оператор curl каждый раз завершает сеанс R. Кроме того, я не смог добавить mail.txt файл к запросу, который я создал во временном каталоге. Кто-нибудь управлял отправкой почты с использованием пакета curl? Почему программа всегда вылетает? Целью должна быть отправка почты на всех платформах.

 # input variables
to <- "mail1@example.com"
from <- Sys.getenv("MAIL_USER")
password <- Sys.getenv("MAIL_PASSWORD")
server <- Sys.getenv("MAIL_SERVER")
port <- 465
subject <- "Test Mail"
message <- c("Hi there!",
             "This is a test message.",
             "Cheers!")

# compose email body
header <- c(paste0('From: "', from, '" <', from, '>'),
            paste0('To: "', to, '" <', to, '>'),
            paste0('Subject: ', subject))
body <- c(header, "", message)

# create tmp file to save mail text
mail_file <- tempfile(pattern = "mail_", fileext = ".txt")
file_con <- file(mail_file)
writeLines(body, file_con)
close(file_con)

# define curl options
handle <- curl::new_handle()
curl::handle_setopt(handle = handle,
                    mail_from = from,
                    mail_rcpt = to,
                    use_ssl = TRUE,
                    port = port,
                    userpwd = paste(from, password, sep = ":"))
con <- curl::curl(url = server, handle = handle)
open(con, "r")
close(con)

# delete file
unlink(mail_file)
  

Комментарии:

1. Что означает «сбой»?

2. Сеанс просто зависает, и я должен закрыть его, остановив процесс. Я на Ubuntu 18.10, используя R 3.5.2.

3. Когда я выполняю Sys.getenv("MAIL_USER") (также на Ubuntu и R 3.5), я получаю "" . Вы не сообщаете нам достаточно, чтобы помочь в дальнейшем, поскольку мы не можем сказать, какие значения могут быть у вас в системе.

4. Системные переменные включают в себя необходимую информацию для входа на почтовый сервер и устанавливаются в . Файл Renviron. Они совпадают с учетными данными и настройками, используемыми в инструкции curl.