使用 mailR 包从 R 发送邮件时出现错误

Sending a mail from R using mailR package getting the error

我正在尝试使用 mailR 包从 R 发送邮件,但出现错误。

我的代码:

subject <- "Montly Report"
today<-Sys.Date()
fileName <- sprintf('./DailyReports/LaunchDaily_%s.html', format(today, format = "%d-%m-%y"))
body <- "Testing Document"

send.mail(from = from,
          to = to,
          cc = cc,
          bcc = bcc,
          subject = subject,
          attach.files = fileName,
          html = T,
          inline = T,
          body = body,
          smtp = list(host.name = "smtp.gmail.com", port = 465, 
                      user.name = "email id",            
                      passwd = "password", ssl = TRUE),
          authenticate = T,
          send = T
)

和错误:

Error in .jnew("org.apache.commons.mail.ImageHtmlEmail") : 
  java.lang.NoClassDefFoundError: javax/activation/DataSource

我也尝试在 googlegithub 中搜索,但没有得到修复概率

注意:Link我已经阅读了Link并尝试了代码,但对我不起作用。

系统OS:Ubuntu18.04, R 工作室:1.1.456

由于 Java 版本错误不匹配而引发问题。

对于 Ubuntu 用户需要安装 Oracle Java 而不是 JDK 版本并且需要正确设置主路径。

然后 google 帐户设置肯定需要低于 'turn ON'。

设置java..在终端中输入

sudo add-apt-repository ppa:webupd8team/java
sudo apt update; sudo apt install oracle-java8-installer
javac -version

输出

java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

并在 R 中测试一次,例如 java 路径在 rJava

下是否正常工作

尝试 运行 下面的

library(rJava)
library(mailR) 

如果两个库 运行 没有任何错误,那么 JAVA 可以正常工作。

成功消息:

在 r 会话中发送邮件完成后,您将收到如下消息:

[1] "Java-Object{org.apache.commons.mail.ImageHtmlEmail@32709393}"

注意:

在 Ubuntu 本身正确安装和设置路径时要小心。

基本上,您想避免那种依赖性错误。我建议放弃 tha 包 mailR 以支持 emayili,这不会导致那种问题。

emayili GitHub page

javax.activation(Java 激活框架 (JAF))已从 Java9 中的核心 JRE 包中删除。sendR 库是针对 Java 8. 您很可能正在使用没有 JAF 的 Java 的较新版本。

三个选项:

  • 使用Java8
  • JAF jar 添加到您的类路径中
  • 使用 different/better/newer 电子邮件库,最好是不依赖 Java 的电子邮件库,例如 emayili

第三个是我的推荐。