Электронная почта R Studio от RDCOMClient

У меня R Studio версии 3.4.3. У меня проблема с отправкой писем минимум 2 людям (в будущем более 100 человек).

Например: письмо одному человеку. Здесь все ок. Это код:

library(RDCOMClient)
OutApp <- COMCreate("Outlook.Application")
outMail = OutApp$CreateItem(0)
to="[email protected]"
outMail[["To"]] =to
outMail[["subject"]] = "Mail R Studio"
outMail[["body"]] = "body mail"
outMail$Send()

Итак, отправим письмо 2 людям. Я делаю это так:

mailing_list <- data.frame(to = c('[email protected]','[email protected]'), 
                       subject = c('Mail R Studio','Mail R Studio'), 
                       body = c('Please, help me','Please, help me') 

for (i in 1:nrow(mailing_list)) {
  OutApp <- COMCreate("Outlook.Application")
  outMail = OutApp$CreateItem(0)
  outMail[["To"]] = mailing_list[i,1]
  outMail[["subject"]] = mailing_list[i,2]
  outMail[["body"]] = mailing_list[i,3]
  outMail$Send()
}

Код ошибки:

Ошибка в `[[‹ -` (`tmp`, "To", value = 1L):

Не удается прикрепить пакет RDCOMServer, необходимый для создания универсального COM-объекта. Вдобавок: Предупреждение: в библиотеке (пакет, lib.loc = lib.loc, character.only = TRUE, logic.return = TRUE,: nie ma pakietu o nazwie 'RDCOMServer'

Но когда я install.packages ("RDCOMServer") обратная связь такая:

Предупреждение в install.packages:

пакет «RDCOMServer» недоступен (для R версии 3.4.3)

Пожалуйста, помогите мне это сделать! Спасибо


person Madelaine    schedule 03.08.2018    source источник


Ответы (3)


Example code to send email to multiple users:
library(RDCOMClient)

init com api

OutApp <- COMCreate("Outlook.Application")

создать электронное письмо

outMail = OutApp$CreateItem(0)

настроить параметр электронной почты

outMail[["To"]] = paste ( "[email protected]"
                          ,"[email protected]"
                          ,"[email protected]"
                          ,"[email protected]"
                          ,"[email protected]"
                          ,"[email protected]"
                          ,"[email protected]"
                          , sep = ";", collapse = NULL)
outMail[["subject"]] = 'subject'

outMail[["body"]] = 'body'

Отправь это

try(outMail$Send())
person Samiran kar    schedule 03.08.2018
comment
Спасибо вам! Но у меня каждый день появляется новый фрейм данных (здесь прототип mailing_list) со столбцом, куда находится более 100 писем. Я должен каждый день отправлять электронные письма другому человеку. Итак, я написал цикл, чтобы сделать это быстрее, потому что у меня нет времени делать это с помощью функции вставки ... Можете ли вы мне помочь? - person Madelaine; 06.08.2018

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

mailing_list <- data.frame(to = c(...), ..., stringsAsFactors = FALSE)
person Duncan Temple Lang    schedule 08.08.2018
comment
И это решение! Большой! Спасибо, Дункан Темпл Ланг - person Madelaine; 08.08.2018

Пожалуйста, разделяйте электронные письма точкой с запятой (;) в списке, и все должно работать нормально.

Пример: [email protected]; b @ outlook

person Ashish    schedule 22.07.2021