使用RDCOMClient通过R中的Outlook发送电子邮件附件

时间:2015-05-27 18:35:46

标签: r email outlook rdcomclient

我正在运行每日分析,它会通过我的Outlook电子邮件发送一个我想发送的文件。我使用的代码在这里有特色,并且工作得非常好,但它的附件部分永远不会起作用......

library(RDCOMClient)


OutApp <- COMCreate("Outlook.Application")


outMail = OutApp$CreateItem(0)

outMail[["To"]] = "gkinne@horizonmedia.com"
outMail[["subject"]] = "Bruh"
outMail[["body"]] = "Tester"
outMail[["Attachments"]]$Add("L:/Document.csv")

outMail$Send()

原文在这里:

Sending email in R via outlook

代码一直有效,直到附件部分,电子邮件甚至发送,只是没有附件。它吐出这个错误:

<checkErrorInfo> 80020009 
No support for InterfaceSupportsErrorInfo
checkErrorInfo -2147352567
Error: Exception occurred.

任何想法?

7 个答案:

答案 0 :(得分:2)

反转斜线并将其转义。

问题是路径是在R中创建的,它更喜欢正斜杠(因为反斜杠是转义字符),但它正由Outlook解释,它只接收反斜杠。

例如,尝试通过将路径粘贴到插入文件对话框中来向Outlook电子邮件添加附件,但将反斜杠更改为正斜杠。它不接受它。这基本上就是你要做的事情。

反过来使它们成反斜杠,然后为每个反斜杠添加额外的反斜杠以逃避它们。例如:

C:\\Users\\MyFiles\\Documents\\document.txt

R将删除转义字符,并将一条干净的路径传递给Outlook。

答案 1 :(得分:1)

帮助我的答案由David Arenburg在评论中提供:

  

您需要指定完整路径。 L:/Document.csv是完整路径吗?是L.   本地驱动程序或您映射了网络驱动程序?如果以后是这样的话   您需要指定实际的网络路径。

示例:\\ dfwcot \ Home $ \ lando \ bb8 \ 2015-12-24 Daily Report.xlsx

答案 2 :(得分:0)

Attachments类的Add方法接受四个参数。我建议明确指定它们。

附件的来源可以是文件(由具有文件名的完整文件系统路径表示)或构成附件的Outlook项目。确保该文件可访问。

答案 3 :(得分:0)

我也面临着“错误:发生异常”的问题。

但是,在我的情况下,我缺少文件的命名约定。因此,请确保文件名一定不能用SPACE分隔,并且使用定界符作为“-”。

答案 4 :(得分:0)

您可以使用gsub()函数将“ /”更改为路径中的反斜杠“ \”

使用此:

outMail[["Attachments"]]$Add(gsub("/","\\" ,"L:/Document.csv", fixed = TRUE))

答案 5 :(得分:0)

我们的客户面临的问题是他们多次执行此操作。

在您的示例中,您反复使用文件名“ L:/Document.csv”。

每次您尝试生成此邮件时,Outlook都会在一个缓存文件夹中创建该附件。第一个是“ Document.csv”,第二个是“ Document(002).csv”等...

我们看到它达到了(799),显然这是硬限制。

我们必须清理C:\ Users <用户名> \ AppData \ Local \ Microsoft \ Windows \ INetCache \ Content.Outlook 中的临时文件夹,以使其再次正常工作。

只需双击任何邮件中的附件,然后查看该临时文件在何处显示并检查该目录。

答案 6 :(得分:-1)

你需要这样做

L:\\Document.csv

为我工作。使用两个反斜杠。