4

我已经成功地实现了 sendmailR 功能,将一封邮件发送给一个收件人。

您知道是否可以将同一条消息发送给函数内的多个收件人?抄送的一种形式?

如果不是,我认为唯一的方法是在一个变量上循环,这通常是可以的,但是对于我当前的代码来说,会导致循环中的循环并使事情变得公平并且希望不必要的复杂

我在文档中看不到任何表明此类功能的内容-> http://cran.r-project.org/web/packages/sendmailR/sendmailR.pdf

感谢您的帮助,我将继续测试以查看是否有解决方法!

4

3 回答 3

7

在它的源代码中sendmail声明......

if (length(to) != 1) 
        stop("'to' must be a single address.")

因此,这为您留下了几个选项(所有这些都是循环)。与发送电子邮件相比,循环的执行时间可以忽略不计。几个选项是:

选项1

用于Vectorize向量化 的to参数sendmail,允许您提供电子邮件地址的字符向量以发送到...

sendmailV <- Vectorize( sendmail , vectorize.args = "to" )
emails <- c( "me@thisis.me.co.uk" , "you@whereami.org" )
sendmailV( from = "me@me.org" , to = emails )

选项 2

sapply用于迭代sendmail每次应用该函数的电子邮件地址的字符向量...

sapply( emails , function(x) sendmail( to = "me@me.org" , to = x ) ) 
于 2013-09-17T13:00:09.980 回答
1

您可以尝试 github https://github.com/rpremraj/mailR上提供的 mailR 包的开发版本

使用 mailR,您可以发送 HTML 格式的电子邮件,如下所示:

send.mail(from = "sender@gmail.com",
          to = c("recipient1@gmail.com", "recipient2@gmail.com"),
          cc = c("CCrecipient1@gmail.com", "CCrecipient2@gmail.com"),
          subject = "Subject of the email",
          body = "<html>The apache logo - <img src=\"http://www.apache.org/images/asf_logo_wide.gif\"></html>",
          html = TRUE,
          smtp = list(host.name = "smtp.gmail.com", port = 465, user.name = "gmail_username", passwd = "password", ssl = TRUE),
          authenticate = TRUE,
          send = TRUE)
于 2014-05-12T21:28:51.670 回答
0

这对我有用:分别定义来自、味精、主题、正文:

from <- sprintf("<sendmailR@%s>", Sys.info()[4]) 
.....
TO <- c("<adres1@domain.com>", "<adres2@domain.com>")
sapply(TO, function(x) sendmail(from, to = x, subject, msg, body))
于 2013-09-17T13:05:23.560 回答