aha*_*ala 52 email r sendmailr
我有一个从Windows机器运行的预定R脚本.
完成后,我希望此脚本自动发送附带一些日志文件的电子邮件.
使用shell()其他一些脚本可能是可能的,但我想知道R内是否有更好的解决方案.谢谢.
ARo*_*son 45
sendmailR在Windows 7上为我工作.我引用了http://cran.es.r-project.org/web/packages/sendmailR/sendmailR.pdf
smtpServer = Outlook 2010的信息位于文件 - >帐户设置 - >帐户设置 - >双击您的帐户 - >"服务器"框中的文本
library(sendmailR)
#set working directory
setwd("C:/workingdirectorypath")
#####send plain email
from <- "you@account.com"
to <- "recipient@account.com"
subject <- "Email Subject"
body <- "Email body."
mailControl=list(smtpServer="serverinfo")
sendmail(from=from,to=to,subject=subject,msg=body,control=mailControl)
#####send same email with attachment
#needs full path if not in working directory
attachmentPath <- "subfolder/log.txt"
#same as attachmentPath if using working directory
attachmentName <- "log.txt"
#key part for attachments, put the body and the mime_part in a list for msg
attachmentObject <- mime_part(x=attachmentPath,name=attachmentName)
bodyWithAttachment <- list(body,attachmentObject)
sendmail(from=from,to=to,subject=subject,msg=bodyWithAttachment,control=mailControl)
Run Code Online (Sandbox Code Playgroud)
此外,可以通过将另一个mime_part添加到msg列表来发送多个文件,如下所示(我也将其压缩):
attachmentObject <- mime_part(x="subfolder/log.txt",name="log.txt")
attachmentObject2 <- mime_part(x="subfolder/log2.txt",name="log2.txt")
bodyWithAttachment <- list(body,attachmentObject,attachmentObject2)
Run Code Online (Sandbox Code Playgroud)
And*_*eas 15
使用mailR - 它与身份验证,附件一起使用,它会自动发送txt消息以及html等.
mailR需要rJava,有时可能会有点痛苦.在Windows上我没有遇到任何问题.在ubuntu上,这解决了我遇到的一个问题:
sudo apt-get install openjdk-jdk
Run Code Online (Sandbox Code Playgroud)
在R
install.packages("devtools", dep = T)
library(devtools)
install_github("rpremraj/mailR")
Run Code Online (Sandbox Code Playgroud)
(如果你在rJava上遇到麻烦 - 试试sudo R CMD javareconf终端)
mailR 很容易使用并在github页面上有详细记录.
文档中的示例
library(mailR)
send.mail(from = "sender@gmail.com",
to = c("recipient1@gmail.com", "recipient2@gmail.com"),
subject = "Subject of the email",
body = "Body of the email",
smtp = list(host.name = "smtp.gmail.com", port = 465, user.name = "gmail_username", passwd = "password", ssl = TRUE),
authenticate = TRUE,
send = TRUE,
attach.files = c("./download.log", "upload.log", "https://dl.dropboxusercontent.com/u/5031586/How%20to%20use%20the%20Public%20folder.rtf"),
file.names = c("Download log.log", "Upload log.log", "DropBox File.rtf"), # optional parameter
file.descriptions = c("Description for download log", "Description for upload log", "DropBox File"), # optional parameter
debug = TRUE)
Run Code Online (Sandbox Code Playgroud)
注意:您的smtp服务器可能会发现过度使用可疑.例如gmail就是这种情况.因此,在发送几封邮件后,您可能需要登录Gmail帐户并查看该帐户是否已被暂时禁用.另请注意,如果您使用具有双因素身份验证的Gmail帐户,则需要使用特定于应用程序的密码.
chr*_*ler 10
你愿意接受推特消息吗?您可以使用Rcurl向Twitter发布更新,然后可以将其作为文本转发到您的手机,或通过通知设置转发到您的电子邮件.
见这里:http://www.sakana.fr/blog/2007/03/18/scripting-twitter-with-curl/