如何在R中发送电子邮件并读取csv文件,并一次发送多封电子邮件?

3

我有一个包含电子邮件的CSV文件。 如何在R中发送多个电子邮件?

错误1 send.mail函数不接受数据框值。

Error in FUN(X[[i]], ...) : 
  Sorry, parameter type `NA' is ambiguous or not supported.

错误 2 函数未从read.table获取输入
Error in file.exists(body) : invalid 'file' argument

我的代码如下(凭证仅作为示例):
temp <- read.csv("E:/OneDrive/M.Tech/temp.csv",header = FALSE)
m <- data.frame(temp)
email <- m[2,14]
rollno <- m[2,1]

file <- read.table("C:/Mehul Katara/New folder (2)/131004.txt",header =  TRUE,sep = ";")

send.mail(from = "user@gmail.com",
          to = email,
          subject = rollno,
          body = file,        
          smtp = list(host.name = "smtp.gmail.com", port = 465, user.name = "user@gmail.com", passwd = "password", ssl = TRUE),              
          authenticate = TRUE,
          send = TRUE)

是的,电子邮件凭据只是举例而已,不是真实的。 - Mehul Katara
1个回答

0

这里只有一个错误。请使用:

file <- read.table("C://Mehul Katara//New folder (2)//131004.txt",header =  TRUE,sep = ";")

所以你需要将路径中的/更改为//,因为R Windows二进制行为的原因。上面的路径也可能无效,但在这种情况下,你需要摆脱路径中的空格,例如"MehulKatara"。请将文件放到另一个没有路径空格的位置。错误1只是因为错误2而出现,一旦你修复了错误2,错误1就会消失。

从文档中可以得知:

body 邮件正文的文本。如果参数body指向一个已存在的文件位置,则该文件的文本将被解析为邮件的正文。

因此,理想情况下,你应该将函数调用更改为以下内容:

send.mail(from = "user@gmail.com",
          to = email,
          subject = rollno,
          body ="C://Mehul_Katara//New_folder_(2)//131004.txt"
          smtp = list(host.name = "smtp.gmail.com", port = 465, user.name = "user@gmail.com", passwd = "password", ssl = TRUE),              
          authenticate = TRUE,
          send = TRUE)

1
从给定路径读取文件是可以的。如何将该文件存储在变量文件中?send.mail()函数无法识别该文件。 - Mehul Katara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接