作者 | 二缺叶枫
来源 | R友舍
发送邮件可以说是在普通不过的生活场景了。但是试想一下:如果每天都需要将固定邮件发送给同一群人,那么手工去处理这样的工作实在是太无聊了,并且十分浪费时间。为何不利用R语言来完成呢?mailR包实现了在R语言环境下,通过模拟登陆邮箱发送邮件的过程。有了mailR包,发送邮件只需要几行代码,几个参数就能搞定了。本文将简单介绍maiR包的安装及基本的使用过程。
目录:
mailR简介
mailR的安装
mailR的使用
mailR简介
mailR包是Rahul Premra开发的用语R语言环境下发送电子邮件的工具包。利用mailR包,可以轻松利用R语言发送邮件,并且支持添加附件、发送HTML形式内容、插入图片、发送Markdown编译文件等,可谓方便至极。
mailR的安装
mailR包依赖于R.oo,R.methodsS3,R.utils,RJava包,因此在使用install.packages时,系统会自动将mialR包的依赖包下载安装完成。这里以MAC系统为例,介绍mailR包的安装及应用,对于Linux及windows系统,安装方法大同小异。
install.packages('mailR')
also installing the dependencies ‘R.oo’, ‘R.methodsS3’, ‘R.utils’
试开URL’https://cran.rstudio.com/bin/macosx/mavericks/contrib/3.3/R.oo_1.21.0.tgz'
Content type 'application/x-gzip' length 775447 bytes (757 KB)
==================================================
downloaded 757 KB
试开URL’https://cran.rstudio.com/bin/macosx/mavericks/contrib/3.3/R.methodsS3_1.7.1.tgz'
Content type 'application/x-gzip' length 55551 bytes (54 KB)
==================================================
downloaded 54 KB
试开URL’https://cran.rstudio.com/bin/macosx/mavericks/contrib/3.3/R.utils_2.5.0.tgz'
Content type 'application/x-gzip' length 983152 bytes (960 KB)
==================================================
downloaded 960 KB
试开URL’https://cran.rstudio.com/bin/macosx/mavericks/contrib/3.3/mailR_0.4.1.tgz'
Content type 'application/x-gzip' length 601253 bytes (587 KB)
==================================================
downloaded 587 KB
The downloaded binary packages are in
/var/folders/ms/_szt2z8d76xd8lkdn46lslv40000gp/T//RtmpGSSlqo/downloaded_packages
当控制台出现以上内容时,说明mailR已经安装完成。现在可以加载mailR包发送邮件了。
mailR的使用
library(mailR)
JavaVM: requested Java version ((null)) not available. Using Java at "" instead.
JavaVM: Failed to load JVM: /bundle/Libraries/libserver.dylib
JavaVM FATAL: Failed to load the jvm library.
Error : loadNamespace()里算'mailR'时.onLoad失败了,详细内容:
调用: .jinit()
错误: JNI_GetCreatedJavaVMs returned -1
如果出现上面的问题,那么请检查系统是否安装java,并且保证JAVA路径设置正确,并且成功装有Rjava包。
如果没出现上述错误的话,说明mailR包加载成功,现在可以尝试发邮件了!这里以大多数人比较熟悉的QQ邮箱为例,其它类型邮箱设置方法基本一致。
要想利用mailR发送QQ邮件,还需要先开通QQ邮箱的SMTP服务,需要手机验证生成授权码(有些邮箱无序验证)。在QQ邮箱设置处,找到POP3/SMTP服务开启设置处。
由于QQ邮箱SMTP服务中,第三方客户端登陆QQ邮箱均已授权码作为密码登陆(非原始密码),因此需要通过手机验证生成授权吗。此外还可以选择通过SSL加密的方式发送邮件。
在开通了SMTP服务,并且获取了授权码后,就可以实现第三方客户端接发QQ邮件了。
recipients <- c("12********&#64;qq.com") #收件人
sender &#61; "12********&#64;qq.com" #发件人
#填上邮箱密码passwd(QQ邮箱&#xff0c;填写授权码)&#xff0c;
send.mail(
from &#61; sender,
to &#61; recipients ,
subject &#61; "Subject of the email", #主题
body &#61; "Body of the email", #内容
encoding &#61; "utf-8",
smtp &#61; list( host.name &#61; "smtp.qq.com", port &#61; 465, user.name &#61; sender, passwd &#61; "************",ssl &#61; TRUE ), #配置好SMTP参数
authenticate &#61; TRUE, #选择SSL加密方式&#xff0c;端口为465
send &#61; T #发送邮件&#xff0c;如果为F&#xff0c;则不会发送
)
[1] "Java-Object{org.apache.commons.mail.SimpleEmail&#64;63e2203c}"
此时邮件发送成功&#xff0c;可以到邮箱上看看是否能查收到。
此外还可以添加附件&#xff1a;设置attach.files参数
recipients <- c("12********&#64;qq.com") #收件人
sender &#61; "12********&#64;qq.com" #发件人
#填上邮箱密码passwd(QQ邮箱&#xff0c;填写授权码)&#xff0c;
send.mail(
from &#61; sender,
to &#61; recipients ,
subject &#61; "Subject of the email", #主题
body &#61; "Body of the email send&#61;T", #内容
encoding &#61; "utf-8",
smtp &#61; list( host.name &#61; "smtp.qq.com", port &#61; 465, user.name &#61; sender, passwd &#61; "************",ssl &#61; TRUE ), #配置好SMTP参数
authenticate &#61; TRUE, #选择SSL加密方式&#xff0c;端口为465
attach.files &#61;&#39;/Users/root/Desktop/emaiR_test.xlsx&#39;, #填写附件地址
file.names&#61;c(&#39;emailR测试文件&#39;), #设定附件名
send &#61; T #发送邮件&#xff0c;如果为F&#xff0c;则不会发送
)
此外&#xff0c;emailR也支持发送HTML格式的邮件内容&#xff0c;嵌入图片、以及MARKDOWN文件等。参考内容可见mailR官方文档&#xff1a;
https://github.com/rpremraj/mailR
http://mirrors.xmu.edu.cn/CRAN/
——————————————
往期精彩&#xff1a;
美国“实体清单”再度升级&#xff0c;我国超级计算机今日起或面临“断供”&#xff01;
我造的假我自己打&#xff0c;Adobe推出“反PS”
微软删除人脸识别&#xff0c;除了隐私&#xff0c;更重要的可能是性别歧视与种族主义