【问题标题】:Looping through a DataFrame and Sending Email Using RDCOMClient循环使用 DataFrame 并使用 RDCOMClient 发送电子邮件
【发布时间】:2020-03-29 14:28:54
【问题描述】:

我已经用几种不同的方式尝试了这段代码,但一直收到同样的错误。我不相信代码是问题所在,我想知道我是否缺少 RDCOMClient 的功能。该功能有效,因为我通过它发送了许多电子邮件。是循环功能不起作用。

我只是想遍历一个 DataFrame 的向量并发送一封与它正在循环的电子邮件相对应的电子邮件。

(例如,应向 email1 发送电子邮件,应向 email2 发送电子邮件等)

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)

这是我收到的错误:

[[&lt;-(*tmp*, "To", value = 2L) 中的错误: 无法附加创建通用 COM 对象所需的 RDCOMServer 包 另外:警告信息: 在库中(包,lib.loc = lib.loc,character.only = TRUE,logical.return = TRUE,:

[[&lt;-(*tmp*, "To", value = 2L) 中的错误: 无法附加创建通用 COM 对象所需的 RDCOMServer 包

【问题讨论】:

  • 是的,我遇到了同样的错误。我相信您还需要安装 RDCOMServer 软件包,还是我错了?我正在尝试这个,并会返回给你!
  • 经过更多研究后,我确实想通了。这是因为电子邮件是因素而不是字符串。我刚刚在我的 data.frame() 中添加了 stringsAsFactors = FALSE。
  • 啊哈。这是有道理的——我今天学到了一些新东西,谢谢。
  • 也许你可以发布一个答案?

标签: r loops email rdcomclient


【解决方案1】:

名为 test.df 的 data.frame 包含因子,而不是字符串。因此,您将一个因子的值分配给 outMail[["To"]]。该值是一个整数,在本例中为 1L。所以这是错误的。正如上面的答案所说,制作这些字符串。使用:

test.df <- data.frame(to = c(...), ..., stringsAsFactors = FALSE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2019-12-17
    • 2020-02-24
    • 2016-08-13
    • 1970-01-01
    相关资源
    最近更新 更多