为了工作,我必须向许多客户发送自定义但类似的电子邮件。有时电子邮件列表很长,所以我希望尽可能地自动化。我还需要使用本地Outlook客户端发送这些电子邮件。 sendmailr
和其他电子邮件软件包似乎不支持Outlook,因此我正在使用RDCOMClient
,该文档的电子邮件文档很少。
假设我有一个包含名称,电子邮件等的csv文件,并且我想根据该信息生成几封电子邮件。
email_data <- read.csv("Book1.csv", stringsAsFactors = F)
email_data
Email First.Name Last.Name Organization
1 test1@test.com test name 1 test lname 1 test org 1
2 test2@test.com test name 2 test lname 2 test org 2
3 test3@test.com test name 3 test lname 3 test org 3
使用我发现的通过RDCOMClient
发送电子邮件的单个示例,我将所有内容都放入了for循环中,该循环可以实现我想要的功能。
for(i in 1:nrow(email_data)){
OutApp <- COMCreate("Outlook.Application")
## create an email
outMail = OutApp$CreateItem(0)
## configure email parameter
outMail[["To"]] = email_data$Email[i]
outMail[["subject"]] = "Test auto email"
outMail[["body"]] = paste0("Hi ", email_data$First.Name[i], ",\n\n",
"Please submit documentation for ",
email_data$Organization[i], " by 4pm today.\n\n",
'Thanks, TestSender')
## send it
outMail$Send()
}
这适用于我的测试示例,但这是一次就发送200多个电子邮件的最佳实践吗?初始化COM对象数百次似乎有点过头了,并且可能会破坏安全设置。还有其他支持Outlook中电子邮件发送的软件包吗?