Я использую API sendgrid для отправки электронного письма с таблицей в теле письма.
Вот пример кода того, что у меня есть (с использованием набора данных iris). Вывод выглядит как простая неформатированная таблица, и я действительно хотел бы сделать ее более презентабельной (с границами таблицы и пробелами). Любые выводы по этому вопросу будут полезны. Я также новичок в отправке электронных писем с использованием sendGrid, поэтому не стесняйтесь предлагать и другие методы.
require(httr)
require(jsonlite)
key1 <- #enter your sendGrid API Key here
from.email <- "abc@xyz.com"
to.email <- "xyz@abc.com"
subject <- "IRIS Report"
colNamesDisplay <- paste("\\n",
do.call(paste, purrr::map(colnames(iris), function(colName){
paste(" ", colName)
}))
)
body <- paste(colNamesDisplay,
"\\n-------------------------------------------------------------------- ",
do.call(paste, purrr::map(1:nrow(iris), function(rowInd){
paste("\\n\\n",
do.call(paste, purrr::map(1:ncol(iris), function(colInd){
paste(" ", as.character(iris[rowInd, colInd]))
})))
}))
)
msg <- sprintf('{\"personalizations\":
[{\"to\": [{\"email\": \"%s\"}]}],
\"from\": {\"email\": \"%s\"},
\"subject\": \"%s",
\"content\": [{\"type\": \"text/plain\",
\"value\": \"%s\"}]}', to.email, from.email, subject, body)
sendResponse <- POST("https://api.sendgrid.com/v3/mail/send",
body = msg,
config = add_headers("Authorization" = sprintf("Bearer %s", key1),
"Content-Type" = "application/json"),
verbose())
В моей электронной почте я получаю следующую таблицу:
Sepal.Length Sepal.Width Petal .Длина
5.1 3.5 1.4
4.9 3 1.4
4.7 3.2 1.3
Я бы предпочел что-то вроде этого: