R で SMTPS を使用してメールを送信したいと考えています。現在、TLS 経由のメール送信をサポートしているパッケージ ( rmail
& 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'
残念ながら、brillientcurl
パッケージを使用してそのスニペットを R に変換することはできませんでした。すべてのオプションを見つけることができましたが、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)