前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R语言-邮件发送

R语言-邮件发送

原创
作者头像
十维农场主
发布于 2023-05-20 16:23:56
发布于 2023-05-20 16:23:56
70700
代码可运行
举报
运行总次数:0
代码可运行

无意间发现一个好玩的R包(blastula),R也可以用来自动发送邮件,之前都是用python。这样用R处理一些事情后日志就可以直接通过R发送。

1. 设置账号密钥(部分邮箱可以直接用密码,如hotmail等),运行create_smtp_creds_key()会弹出一个密钥/密码输入框,输入即可。

  • 方法一(官方示例,适应于gmail, outlook, office365这三种邮箱):
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(keyring)
library(blastula)
# 创建许可证[运行一次即可]
# -------------------------------------
create_smtp_creds_key(
  id = "outlook",     # 这个id可以设置为任意,但是要记住,发件时需要用到,用来区分用户
  user = "xx@hotmail.com",  # 这里填入你的邮件地址
  provider = "outlook"  # gmail, outlook, office365 三选一,这三种邮箱可以设置,否认不要设置此参数
)
view_credential_keys()
  • 方法二(任意支持smtp的邮箱,smtp服务地址和端口见各大邮箱设置):
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(keyring)
library(blastula)
# 创建许可证[运行一次即可]
# -------------------------------------
create_smtp_creds_key(
  id = "张三",                                 # 以某支持smtp服务的邮箱为例。
  user = "xxxx@zz.com",              # 这里填入你的邮件地址
  host = "smtp.exmail.qq.com",   # stmp服务地址
  port = 465,                                # 端口
  use_ssl = TRUE,                         #  端口是否加密
  overwrite = T                            # 是否覆盖设置(如果密码错误,需要将这个设置为T覆盖错误的配置)
)
view_credential_keys()

2. 另外新建一个文件存储下面的脚本(如 sendMail.R)

  • 此脚本已经设置好命令行参数(不会使用的见链接),直接保存运行Rscript sendMail.R -h查看帮助后直接终端运行即可
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
suppressWarnings({
  library(optparse) 
  library(keyring)
  library(blastula)
})

option_list <- list(
  make_option("--from", type = "character", default = "xxx@hotmail.com",
              action = "store", help = "发件箱, 默认为xxx@hotmail.com"
  ),
  make_option("--id", type = "character", default = "outlook",
              action = "store", help = "id, 与发件箱对应的存储密钥id,默认为outlook"
  ),
  make_option("--to", type = "character", default = NULL,
              action = "store", help = "收件箱"
  ), 
  make_option("--subject", type = "character", default = "无主题",
                 action = "store", help = "主题,默认:无主题"
  ), 
  make_option("--body", type = "character", default = NULL,
                 action = "store", help = "Rmd正文路径,如不设此参数,则需设置mail参数"
  ), 
  make_option("--mail", type = "character", default = NULL,
                   action = "store", help = "正文内容,支持md,不能同时body和mail都设置 "
  ), 
  make_option("--add", type = "character", default = "",
                 action = "store", help = "附件文件路径,包括后缀"
  ),
  # 设置模式
  make_option(c("-v", "--view"), type = "logical", default = FALSE,
              action = "store_true", help = "查看邮件id、密码信息, 仅使用-v参数时可以查看密钥id"
  )
)

# 解析参数
opt = parse_args(OptionParser(option_list = option_list, 
                              usage = "邮件发送",
                              description = "格式: Rscript %prog [options]\n"))

# 仅有一个view参数时:
if (isTRUE(opt$view)) {
  v_id.df <- view_credential_keys()
  print(v_id.df)
  stop("ID信息如上所示", call. = FALSE)
}

# body和mail同时缺失或同时存在时:
if( is.null(opt$body) & is.null(opt$mail)) { stop({ 
  cat("Error:\n参数body和mail不能同时设置或同时缺失\n\t邮件内容要么放在Rmd文件中要么写在mail参数中") 
}) }
if( !is.null(opt$body) & !is.null(opt$mail)) { stop({ 
  cat("Error:\n参数body和mail不能同时设置或同时缺失\n\t邮件内容要么放在Rmd文件中要么写在mail参数中") 
}) }


# main:
# 定义邮件要素
from = opt$from 
id = opt$id            # id为创建许可证时设置的与密钥相关联的id,view_credential_keys()可查看。
to = opt$to               
subject = opt$subject   
body = opt$body
mail = opt$mail
attachment = opt$add   #"path/to/附件" 必须包含后缀, 如果没有附件,引号内留空即可。 #参数


# 渲染
if (is.null(body)) {
  email <- compose_email(
    body = md(
      mail
      )
  )
} else {
  # 渲染Rmd
  if (attachment == "") {
    email <- render_email(body)
  } else {
    email <- render_email(body) %>% 
      add_attachment(file = attachment)
  }
}

# 发送邮件
smtp_send(
  from = from,
  to = to,
  subject = subject,  # 可用enc2utf8()处理中文主题乱码问题, 检验是否为Encoding(subject) 
  email = email,
  credentials = creds_key(id = id) 
)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
5种前端实现邮件发送至指定邮箱的方式
在前端开发中,JavaScript并没有提供直接操作Email邮箱的功能方法,但是如果遇到这样的需求,我们应该如何实现js发送邮件至指定邮箱功能呢?下面列举能够在通过前端实现邮件发送的5种方式:
Nealyang
2021/01/28
11.8K0
使用Rust发送邮件
SMTP(简单邮件传输协议,Simple Mail Transfer Protocol)是一种用于发送和接收电子邮件的互联网标准通信协议。它定义了电子邮件服务器如何相互发送、接收和中继邮件。SMTP 通常用于发送邮件,而邮件的接收通常由 POP(邮局协议)或 IMAP(互联网消息访问协议)来处理。
fliter
2024/01/09
5700
使用Rust发送邮件
Python编写的Linux邮件发送工具
之前有用过Linux自带的mail工具来定时发送邮件,但是要装mailx还有配mail.rc,这还比较正常,关键是到了ubantu下这工具用起来真是操蛋,如果哪天其他的unix like操作系统也有需求,那就太麻烦了,所以我用自带的python2.6.6和自带的邮件相关的库写了个小工具,使用步骤如下:
py3study
2020/01/17
7640
Java技术:SpringBoot实现邮件发送功能
邮件发送功能基本是每个完整业务系统要集成的功能之一,今天小编给大家介绍一下SpringBoot实现邮件发送功能,希望对大家能有所帮助!
小明互联网技术分享社区
2022/05/24
1.9K2
Java技术:SpringBoot实现邮件发送功能
javax.mail 实现邮件发送
首先,附上官网文档,请自行查阅: https://docs.oracle.com/javaee/7/api/javax/mail/package-summary.html 常用邮箱服务器以及对应端口: sina.com: POP3服务器地址:pop3.sina.com.cn(端口:110) SMTP服务器地址:smtp.sina.com.cn(端口:25) sinaVIP: POP3服务器:pop3.vip.sina.com (端口:110) SMTP服务器:smtp.vip.s
小小明童鞋
2018/06/13
3.9K0
重学Springboot系列之邮件发送的整合与使用
简单的说:POP3和IMAP是用来从服务器上下载邮件的。SMTP适用于发送或中转信件时找到下一个目的地。所以我们发送邮件应该使用SMTP协议。
大忽悠爱学习
2021/12/07
6170
重学Springboot系列之邮件发送的整合与使用
Python下的邮件发送示例
注:邮件内容是使用HTML构建的,如果熟悉这方面,可以使用HTML的方式构建自己想要的内容结构
no怕不了木
2023/12/19
2500
邮件发送功能开发
作为一名.Net开发,"邮件发送"功能的开发和使用是必须要掌握的,因为这个功能作为“消息推送”的一种手段经常出现在各种.Net系统中,所以本文将对.Net平台下的“邮件发送”,做一个细致的分析! 一、who需要邮件功能 1、服务提供方:需提供邮件收发客户端或Web服务。如:QQ邮箱、GMail邮箱、126、163等知名邮件服务提供商。注:如果你使用的第三方不知名邮件服务商提供的邮件收发服务,通过其发出的邮件,可能会被其他知名邮件服务提供商的STMP服务器视为是"恶意邮件或垃圾邮件"! 2、消息推送:消息推送
郑小超.
2018/01/26
4.2K0
Jenkins 邮件发送「可修改模版」
上一篇,Jenkins Pipeline 结合 Gitlab 实现 Node 项目自动构建 我们已经实现了自动构建的功能。
Jimmy_is_jimmy
2022/03/10
1.1K0
Jenkins 邮件发送「可修改模版」
SpringBoot实现邮件发送
SMTP全称为Simple Mail Transfer Protocol(简单邮件传输协议),它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP认证要求必须提供账号和密码才能登陆服务器,其设计目的在于避免用户受到垃圾邮件的侵扰。
框架师
2021/03/05
6930
python利用flask_mail、sendgrid发送邮件[通俗易懂]
在学习Flask,看的书籍是《Flask Web开发实战 入门、进阶与原理解析》。在学习发送电子邮件这一章节时,遇到一些问题,便写下这一篇文章,记录一下,也希望遇到同样问题的人能够花较少时间在解决问题上。
全栈程序员站长
2022/11/17
2K0
python利用flask_mail、sendgrid发送邮件[通俗易懂]
php-邮件发送
结果就直接报错,如下: Warning: mail() [function.mail]: Failed to connect to mailserver at “localhost” port 25, verify your “SMTP” and “smtp_port” setting in php.ini or use ini_set() inD:/www/Zend/email/email.php on line 10 分析原因:本地需要有SMTP服务器,又改了下代码:
kdyonly
2023/03/03
1.7K0
R语言Rscript脚本-参数设置
通过加载optparse包进行参数设置,这种方法类似与python中argparse方法设置参数,如果不是简单的一两个参数推荐这种方法调用参数。
十维农场主
2023/05/17
1.2K0
Django——邮件发送
EMAIL_HOST = 'smtp.qq.com' #不同的邮箱有不同的发件地址(收件地址)
py3study
2020/01/19
8380
python SMTP邮件发送
本例使用的时python2.7环境,python3的操作应该也是差不多的。 需要用到smtplib和email两个包。
py3study
2020/01/16
1.9K0
干货 | 解放双手,用Python实现自动发送邮件
使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,节省非常多的时间。 Python有两个内置库:smtplib和email,能够实现邮件功能,smtplib库负责发送邮件,email库负责构造邮件格式和内容。 邮件发送需要遵守SMTP协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 1、先导入相关的库和方法
派大星的数据屋
2022/04/02
1.9K0
干货 | 解放双手,用Python实现自动发送邮件
常见邮件发送失败原因分析以及解决方法是_手机邮箱发送失败
我发到 sina 的邮件会被退回,并提示remote server said: 553 Spam Mail http://mail.sina.com.cn/FAQ.html;错误,怎么办?
全栈程序员站长
2022/11/10
5.4K0
常见邮件发送失败原因分析以及解决方法是_手机邮箱发送失败
ASP.NET 实现发送邮件 + 多个收件人 + 多个附件
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/42011431
DannyHoo
2018/09/13
2.2K0
ASP.NET 实现发送邮件 + 多个收件人 + 多个附件
Spring Boot 发送邮件实战全解析
欢迎阅读 Spring Boot 2 实战系列[1] 电子邮件虽然近几年有点“退火”,但是在开发中依然有举足轻重的地位。在比较正式的场合我们依然通过电子邮件来传递信息和回执。今天我们就来学一下如何在 Spring Boot 下发送电子邮件。
码农小胖哥
2020/02/13
1.7K0
Spring Boot 发送邮件实战全解析
结合ABP源码实现邮件发送功能
1. 前言 最近pm临时提出了多种邮件验证操作的需求,因为一时间也没有找到好的邮件收发组件,也抱着研究ABP的心态,就花了几小时时间探究了一下ABP中关于Email的处理和操作。其实邮件操作大多大同小异,这次只是希望介绍一下ABP中实现功能的代码结构而已,以下是具体过程 演示的ABP代码版本为0.9.0.0,不过后面版本对于这部分的修改较少,所以完全不影响之后版本的移植使用 2. 实现过程 ABP的Mail操作放在了Abp.Net.Mail和Abp.Net.Mail.Smtp中,第一步先让我们直接看
潘成涛
2018/01/18
1.2K0
结合ABP源码实现邮件发送功能
相关推荐
5种前端实现邮件发送至指定邮箱的方式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验