研零开学前接了一个邮件自动发送的单子,用阿里云邮件推送sdk实现邮件的自动发送功能。该任务的关键如下:
功能描述
- 使用多个阿里云账户轮流发送,若有未发送完成的邮件,第二天接着发送(阿里云初始限额一天2000封邮件,若超出额度则换账户发送或者第二天继续发送)
- 记录邮件发送进度,若意外中断,再次执行该任务时能够跳过已经发送的联系人
- 记录任务执行情况,包括邮件发送进度、邮件发送状态(包含发送成功、垃圾邮箱、用户拒收、发送失败)
- 前端提供表格导入导出功能,能够对联系人数据、发信模板等内容进行增删改查
- 前端能够创建任务,并配置发送任务的联系人分组和邮件模板(支持图片,自动修正每个联系人的名字)
- 前端能够对阿里云账户(配置账户名、账户密码、消息接入地址、发信域名等信息并生成json配置文件)
实现步骤
1.使用阿里云邮件发送服务之前需要注册域名等操作,这些操作本文不进行记录。
2.前端实现
前端使用vue+elementui实现,邮件模板部分使用quill富文本编辑器,页面如下:
从零开始构建vue2.0项目:
其中邮件模板编辑页面涉及到富文本保存到数据库中,最开始使用的富文本编辑器自动将图片转为base64的格式,而base64格式的图片往往比较大,这就导致图片不好存入数据库。最后的解决方案如下:
前端使用axios跟接口服务器进行交互
3.后端实现
后端使用flask构建项目,使用阿里云smpt邮件服务的sdk实现发送功能
从零开始构建flask项目过程:
阿里云sdk简要分析:
发送的逻辑:
4.部署到linux系统