我在使用 sendmail 从 gmail 的 smtp 服务器发送邮件时运气不佳。我不记得这个问题,但我尝试了许多解决方案。
但是,可以使用 Postmarkapp API。它使用 Hadley 的 postmarkapp.R (https://gist.github.com/hadley/5707759) 工作。您可以在https://postmarkapp.com/ 注册免费的 API 密钥。
几个月前,瑞典一位非常乐于助人的人给我发了这样的解释:
在 postmarkapp.com 注册并在 https://gist.github.com/hadley/5707759 获得 Hadley 的脚本后需要的步骤
从 postmarkapp.com 复制您的 API 密钥(在您的服务器名称下的凭据选项卡中)
c80dc162-ad1c-44e8-b406-e9921fd8d2c3
在 R 中,编写:Sys.setenv(POSTMARKAPP_API_KEY= your-copied-api-key-here)
Sys.setenv(POSTMARKAPP_API_KEY= “c80dc162-ad1c-44e8-b406-e9921fd8d2c3”) # 带引号
在您要从中发送电子邮件的文件中,使用以下代码:
source('../postmarkapp.r') #或者你的 postmarkapp.r 的路径
source("C:/Users/Rees/Documents/R/R Scripts/sendgmailwithpostmarkfromHadleygist.R")
mailtext
send_email(to = '...', from = '...', subject = '...', body = mailtext, attachments = 'path-to-file') #或跳过附件
这应该可行。但是,如果代码在获取 postmarkapp 时失败,则可能是由于依赖库所致。该应用程序取决于:
库(base64enc)
库(RJSONIO)
图书馆(httr)
如果其中任何一个没有安装,您需要这样做。请注意,httr 存储在 github 上,需要使用 devtools 包中的 install_github 进行安装:http://www.rstudio.com/projects/devtools/
我用来发送给多个收件人的一个技巧,虽然在 PostmarkApp 上只花费了一个信用,但将文件发送到我自己的电子邮件地址,并在 Outlook 中将邮件转发到多个地址。这也应该为您节省几块钱,但当然它会在链条中引入一个新的潜在故障点,必须对其进行监控。
我刚刚获得了发送给多个收件人的解决方案。在http://developer.postmarkapp.com/developer-build.html找到它
- 您可以在“收件人”字段以及可选的“抄送”和“密件抄送”字段中传递多个收件人地址。用逗号分隔多个地址。请注意,邮戳对每封邮件的收件人总数限制为 20 个。您需要注意不要超过该限制。否则你会得到一个错误。
因此,您在尝试 sprintf 时走在了正确的轨道上。也许你已经有了。我使用:
to = c("addressone", "addresstwo")
to = paste(to, collapse=', ')