Цикл через DataFrame и отправка электронной почты с помощью RDCOMClient

Я пробовал этот код несколькими способами и продолжаю получать ту же ошибку. Я не верю, что проблема заключается в коде, мне интересно, есть ли в RDCOMClient какие-то функции, которые мне не хватает. Функциональность работает, так как я отправил через нее много писем. Не работает функция зацикливания.

Я просто пытаюсь перебрать вектор DataFrame и отправить электронное письмо, соответствующее электронному письму, которое он перебирает.

(например, электронное письмо должно быть отправлено на адрес электронной почты 1, электронное письмо должно быть отправлено на адрес электронной почты 2 и т. д.)

test.df <- data.frame(
                      "email" = c("email1", "email2", "email3")
                      ,"name" = c("name1", "name2", "name3")
                      )
mail_fun <- function(mail) {
  outMail = OutApp$CreateItem(0)
  ## configure  email parameter
  outMail[["To"]] = mail
  outMail[["subject"]] = "Project hours for next week"
  outMail[["HTMLBody"]] = paste0("<p>Testing sending hours through R</>")
  ## send it
  outMail$Send()
}

sapply(test.df$email, mail_fun)

Я получаю следующее сообщение об ошибке:

Ошибка в _4 _ (_ 5_, «Кому», значение = 2L): не удается прикрепить пакет RDCOMServer, необходимый для создания универсального COM-объекта. Вдобавок: Предупреждение: в библиотеке (пакет, lib.loc = lib.loc, символ. only = TRUE, logic.return = TRUE,:

Ошибка в _6 _ (_ 7_, «Кому», значение = 2L): не удается подключить пакет RDCOMServer, необходимый для создания универсального COM-объекта.


person isaacbell1234    schedule 04.12.2019    source источник
comment
Да, у меня такая же ошибка. Я считаю, что вам также необходимо установить пакет RDCOMServer, или я ошибаюсь? Я пробую это и вернусь к вам!   -  person Felix T.    schedule 04.12.2019
comment
Я действительно понял это после дополнительных исследований. Это потому, что электронные письма были факторами, а не строками. Я просто добавил stringsAsFactors = FALSE в свой data.frame ().   -  person isaacbell1234    schedule 04.12.2019
comment
Ага. В этом есть смысл - я узнал кое-что новое сегодня, спасибо.   -  person Felix T.    schedule 04.12.2019
comment
может ты можешь опубликовать ответ?   -  person Felix T.    schedule 04.12.2019


Ответы (1)


Data.frame с именем test.df содержит факторы, а не строки. Итак, вы присваиваете значение из фактора исходящей почте [["Кому"]]. Это значение является целым числом, в данном случае 1L. Так что это неправильно. Как сказано в ответе выше, сделайте эти строки. Использовать:

test.df <- data.frame(to = c(...), ..., stringsAsFactors = FALSE)
person isaacbell1234    schedule 04.12.2019