通过outlook发送R Markdown输出作为正文电子邮件(RDCOMclient)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过outlook发送R Markdown输出作为正文电子邮件(RDCOMclient)相关的知识,希望对你有一定的参考价值。

刚刚学习R Markdown语言并想知道我是否可以通过Outlook的Outlook发送身体电子邮件中的输出(使用RDCOMClient;我的办公室不使用gmail)

谢谢

答案

根据Ben的回答,到处出现的奇怪符号可能是由于R和Outlook对象(由RDCOMClient库创建)之间的不匹配引起的。

Outlook的基本编码是“UTF-16”,而基本的RMarkdown输入是“UTF-8”。要确保RMarkdown生成的html输出为“UTF-8”,请写入:

knitr::knit("tale_email_body.Rmd", encoding = "UTF-8")  
eb <- read_lines("tale_email_body.html",locale =  locale(encoding = "UTF-8"))     
Encoding(eb)

你应该看到一个矢量,其条目是"UTF-8""unknown"。接下来,您必须使用以下命令将编码转换为正确的格式:

eb2 <- paste(eb, sep="", collapse="") 
eb2 <- iconv(eb2, from = "UTF-8",to= "Latin1")

您应该能够使用Ben的代码发送没有奇怪符号的电子邮件:

library(RDCOMClient)

olMailItem <- 0
OutApp <- COMCreate("Outlook.Application")
outMail = OutApp$CreateItem(olMailItem)

# this retains default Outlook signature
outMail$GetInspector()
signature <- outMail[["HTMLBody"]]

outMail[["To"]] <- sm
outMail[["CC"]] <- paste("egrp",dm,sep=";")
outMail[["subject"]] <- "note this"
outMail[["BodyFormat"]] <- 2
outMail[["HTMLbody"]] <- paste0(eb2, signature)
outMail$Display()
outMail$Send()
另一答案

简短回答:

为电子邮件正文创建.Rhtml文件。

编织并阅读:

knitr::knit("tale_email_body.Rhtml")  
library("readr", lib.loc="~/R/win-library/3.2")
eb <- read_lines("tale_email_body.html",n_max= -1L)
eb2<-paste(eb, sep="", collapse="") 

在电子邮件正文中使用结果

library(RDCOMClient)

olMailItem <- 0
OutApp <- COMCreate("Outlook.Application")
outMail = OutApp$CreateItem(olMailItem)

# this retains default Outlook signature
outMail$GetInspector()
signature <- outMail[["HTMLBody"]]

outMail[["To"]] <- sm
outMail[["CC"]] <- paste("egrp",dm,sep=";")
outMail[["subject"]] <- "note this"
outMail[["BodyFormat"]] <- 2
outMail[["HTMLbody"]] <- paste0(eb2, signature)
outMail$Display()
outMail$Send()

如果您有任何问题或改进,请告诉我。

部分信用:How to add my Outlook email signature to the COM object using RDCOMClient

以上是关于通过outlook发送R Markdown输出作为正文电子邮件(RDCOMclient)的主要内容,如果未能解决你的问题,请参考以下文章

MailMessage 将字符串作为正文发送,在 Outlook 中没有换行符

作为后台进程发送电子邮件 Outlook 2013

Excel 通过 Outlook 发送电子邮件时如何处理错误?

如何使用VC ++中的Atl / Com项目通过outlook添加ins,将选定的收件箱邮件作为附件发送

我应该如何使用 Outlook 发送代码片段?

使用 Zend_mail 时,我的电子邮件似乎被视为垃圾邮件,通过 Outlook 发送而没有?