问题:
在RGui通过source(xx.R)执行R脚本时,发现mailR包的send.mail发出来的邮件中文乱码。
在Rstudio中暂未发现该问题。
脚本如下:- library(mailR)
- recipients <- c('zx@qq.com,lsy@qq.com,zy@qq.com') # 收件人
- cc<-c('xk@qq.com')
- sender = 'data@qq.com' # 发件人
- title =paste('【自动邮件】XXX',substring(as.Date(paste(substring(Sys.Date(),1,8),'01',sep=''))-1,1,7),sep='') # 主题
- body = paste(substring(as.Date(paste(substring(Sys.Date(),1,8),'01',sep=''))-1,1,7),
- 'XXX爬取完成,见附件。\r',
- '数据为程序自动抓取,请抽样验证后使用。\r',
- '数据中有“缺失”、“0”、“NaN”的情况,使用时请注意。',
- sep='') # 正文
复制代码
问题分析:中文编码引起的
详见github:https://github.com/rpremraj/mailR/issues/51#start-of-content
解决办法1:如果是windows环境下编写的R语言脚本,且在windows环境下执行,那把R语言脚本保存成ANSI编码格式的即可。
解决办法2:将title和body都先写入一个文件,然后指定UTF-8的编码格式读取该文件作为内容即可。
如果写成txt文件,可以用read.table;如果写成html文件,可用readLines。注意:写成txt文件时,内容末尾要再按一下回车键另起一行,这样read.table才可以通过回车键识别到一行完整数据。
title =paste0(read.table('E:/auto_run/auto_run_lj_1_title.txt',header = FALSE,encoding = 'UTF-8'),collapse = NULL) # 主题
body = paste0(read.table('E:/auto_run/auto_run_lj_1_body.txt',header = FALSE,encoding = 'UTF-8'),collapse = NULL) # 正文
|
|