从 Shiny 发送附件

Posted

技术标签:

【中文标题】从 Shiny 发送附件【英文标题】:Sending an attachment from Shiny 【发布时间】:2015-07-27 13:12:45 【问题描述】:

我使用 Shiny 创建了一个应用程序并上传到了 Shinyapps.io 的服务器;我已经测试过了,一切都很好。我的应用程序通过 server.R 创建一个文本文件,当用户完成任务时我想将其发送到我的电子邮件。我想将该文件发送到我的电子邮件,因为我看不到在 shinyapps.io 管理工具中查看闪亮应用程序输出的文件的方法。所以底线是,如何将文件从闪亮的应用程序发送到我的电子邮件?

例如,如果我有以下情况:

library(sendmailR)
datos<-read.table("data.txt")
to <- "<loretta@gmail.com>"
subject <- "Email Subject"
body <- "Email body."                     
mailControl=list(smtpServer="ASPMX.L.GOOGLE.COM")
sendmail(from="localhost",to=to,subject=subject,msg=body,control=mailControl)
attachmentObject <- mime_part(name=datos)
bodyWithAttachment <- list(body,attachmentObject)
sendmail(from="localhost",to=to,subject=subject,msg=bodyWithAttachment,control=mailControl)

我想知道我应该在from部分放什么,我的意思是我已经放了它localhost,但我需要把闪亮的地址放在哪里应用程序正在运行;从哪里可以得到?

另外,当我运行上述代码时,不是在 Shiny 环境中,而是作为脚本在 sendmail 部分之后出现以下错误:

Error in wait_for(code) : 
  SMTP Error: 5.5.2 Syntax error. g22si4860678yhc.87 - gsmtp

任何帮助都会很棒

【问题讨论】:

看看这里。我认为从 R ***.com/questions/2885660/… 向 gmail 帐户发送电子邮件很容易 已经尝试过@pops,但一点运气都没有 我尝试了不同的方式。只需使用 R 文件创建一个 html 并创建一个批处理来运行 R 文件并附加 html 文件并发送邮件。我认为您可以将其用作解决方法,直到它起作用为止。 sendmailR 包发生了一些问题,似乎不再起作用。尝试使用 MailR 包,如果加载时遇到问题,您可能还需要指定 rJava 的目录 从您的问题中了解到,您想发送电子邮件是因为您无法保存文件。此链接说明了如何跨会话共享数据:goo.gl/Aa4bsp 第一个选项使用 Amazon S3,有一个示例 (goo.gl/EZgyKZ),看起来很容易实现。如果您想为每个用户创建一个单独的文件,您可以在每个会话中更改 .txt 的名称(我通常通过 paste0(as.numeric(Sys.time()),".txt")) 【参考方案1】:

这适用于我使用 ma​​ilR 库从 Outlook 发送电子邮件:

library(mailR)

bodyMsg <- "Some message to be included in the body of the email"

send.mail(from = "sender@xyz.com", to = "receiver@xyz.com",  subject = "Some topic",
              body = bodyMsg ,  authenticate = TRUE, html = TRUE, send = TRUE, attach.files = file.path(folder, fileName),
              smtp = list(host.name = "abcdef.xyz.com", port = 587, user.name = "sender@xyz.com", passwd = "password", tls = TRUE))

【讨论】:

以上是关于从 Shiny 发送附件的主要内容,如果未能解决你的问题,请参考以下文章

从表单发送电子邮件附件

从 mfmailcomposer 发送附件时无法查看邮件附件中的数据

如何从外部附件异步发送和接收数据

如何使用 HomeKit 框架从附件发送通知到 iOS 设备

从任何电子邮件程序发送带有附件的电子邮件

JavaMail 从字符串发送邮件附件 - 编码 UTF-8