python怎么群发邮件_小工具:使用python群发邮件
在小工具这个系列里记录一些我使用简易代码实现的一些小功能,方便自己在以后有需求的时候查看和调用,同时会讲解这些小功能实现实现过程,基础向,有需求或者感兴趣的朋友不妨上手试试。
涉及包及项目结构介绍
本次介绍的是使用python实现群发邮件的一个小功能,其中使用到的包及其功能如下:
configparser:读取配置文件
email:管理电子邮件消息
smtplib:封装了smtp协议,用于发送电子邮件
sys:提供对解释器使用或维护的一些变量的访问
为了方便对不同功能的更改,将不同的功能实现通过不同的模块来实现,不同的文件及其对应的功能如下:
user.ini:存放发件人邮箱与授权码的配置文件
customers.ini:存放收件人邮件列表的配置文件
config.py:读取配置文件的模块
message.py编写邮件内容的模块
send.py:用于发送邮件的模块
邮箱SMTP服务设置
在使用python发送邮件时,首先需要中先使用开通自己邮箱里的SMTP服务,下面我们以QQ邮箱为例,简单介绍一下开启服务的方法.
1.首先进入QQ邮箱,打开设置界面;
01.png
2.切换到邮箱设置下的账号界面;
02.png
3.在以下的服务界面开启IMAP/SMTP服务,通过验证后你可以获得一个授权码,将其保存;
03.png
完成以上设置之后我们就可以开始着手构建群发邮件的python项目。
配置文件准备
在这个项目中使用配置文件来存放发件人和收件人的相关信息,分开存放这样的信息的有点在于可以使得程序更加灵活。可以直接用记事本或Notepad++对构建配置文件,在输入文件信息后在保存时将文件的后缀修改为ini就好
在本次项目中使用的两份项目文件,分别是:
user.ini:存放发件人邮箱与授权码的配置文件
[get_user]
# 发件人邮箱与授权码
user_mail = xxxxxxxxx@qq.com
user_pwd = xxxxxxxxx
customer.ini:用于存放收件人邮件列表的配置文件
[get_customers]
# 存放收件人邮件
client_mail_1 = xxxxx@yahoo.com
client_mail_2 = xxxxxx@qq.com
读取配置文件
设置完配置文件后我们自然需要读取配置文件的信息来进行使用,Python的configparser模块便很好的完成了这项功能。
下列简单介绍configparser包的使用,假设我们有一个名为class.ini的配置文件如下所示:
[class]
number = 4
num_of_people = 60
如果在python中要读取class这个section下key值为num_of_people的数据时,可以使用如下操作:
import configparser # 加载configparser模块
config = configparser.ConfigParser() # 定义一个ConfigParser对象
config.read("C:/Users/CCC/Desktop/class.ini") # 使用该对象读取class.ini配置文件
config.get("class", "num_of_people") # 获取section下的key值
通过以上的方法我们得到了class里面的人数,同理,在我们的项目里两个配置文件对应的section就是get_user和get_customers。于是,我们通过以上的知识封装好针对读取自己的配置文件的函数,并保存于config.py中,文件内容如下所示。
import configparser
#填写配置文件所对应的目录
the_path = "E:/18_learn/Project/stock/new_email/"
# 读取配置文件
# 获取发件邮箱得用户名与密码
def get_config(section, key, file_name):
config = configparser.ConfigParser()
path = the_path+file_name
config.read(path,encoding="utf-8-sig")
return config.get(section, key)
# 获取收件人邮箱列表
def get_client(option, file_name):
config = configparser.ConfigParser()
path = the_path+file_name
config.read(path,encoding="utf-8-sig")
options = config.options(option)
client_list = []
for i in options:
mail = config.get(option, i)
client_list.append(mail)
return(client_list)
编写邮件内容
我们把需要书写的邮件内容单独放到一个python文件下,方便后续的修改,在这个过程中主要使用到了Python下的email包,它提供了管理电子邮件消息的功能。
在日常的工作中,纯文本的邮件已经不足以满足我们的需求了,因此我们使用mail.mime中的MIMEText类来实现支持HTML格式的邮件,因此这样的邮件便可以支持HTML所以支持的元素,包括表单、CSS等多种功能。而你所需要的操作仅需要如下几行代码便可以设置成功。
import MIMEText
from email.header import Header
msg = MIMEText(content, 'html', 'utf-8') # 在content变量中传入准备好的hhtml代码
msg['Subject'] = Header(subject, 'utf-8') # 设置邮件的主题,放入subject变量中
设置一个用于存放邮件信息的代码,命名为message.py,文件内容如下:
from email.mime.text import MIMEText
from email.header import Header
# 书写邮件内容
content = """
您好!
很高兴和你见面:)。
"""
# 书写邮件主题
subject = 'python email test'
def get_mail_message():
msg = MIMEText(content, 'html', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8')
return(msg)
发送邮件模块
设置完以上所用内容之后,只需要将他们用于发送邮件即可,SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
在这个部分使用到了smtplib这个包,它对smtp协议进行了简单的封装。下列的send.py模块封装了用于发送邮件的代码,在使用过程中只需要运行这个文件便可以成功发送邮件,具体的功能解释过多,不单独解释,在注释里进行标注。如果感兴趣的同学可以点击Python SMTP发送邮件,自行了解。
import smtplib
import sys
import config
import message
# 添加文件所在的地址的文件夹,以加载模块
sys.path.append("passl")
# 发送邮件
def send_mail():
msg = message.get_mail_message()
smtpserver = 'smtp.qq.com' # 定义发件邮箱所用的服务器类型
sender = config.get_config("get_user", "user_mail", "user.ini") # 读取发件人邮箱
username = sender
password = config.get_config("get_user", "user_pwd", "user.ini") # 读取发件人授权码
receiver = config.get_client("get_customers", "customers.ini") # 读取收件人邮箱列表
smtp = smtplib.SMTP() # 定义一个SMTP对象
smtp.connect(smtpserver) # 连接邮件服务器
smtp.login(username, password) # 使用邮箱和授权码登陆
for i in receiver:
smtp.sendmail(sender, i, msg.as_string()) # 循环发送邮件
smtp.quit() # 退出登陆
send_mail()
以上就是这个小工具群发邮件的所有内容了,其实可以可以定制的东西还很多,比如可以丰富HTML格式还美化邮件、也可以加入添加邮件附件的代码,感兴趣的同学可以自己多尝试,需要下载所有项目文件的同学可以移步我的Github,以上。
Escher
2018/11/16
python怎么群发邮件_小工具:使用python群发邮件相关推荐
- python换脸完整程序_小 200 行 Python 代码做了一个换脸程序
原标题:小 200 行 Python 代码做了一个换脸程序 简介 在这篇文章中我将介绍如何写一个简短(200行)的 Python 脚本,来自动地将一幅图片的脸替换为另一幅图片的脸. 这个过程分四步: ...
- python营业数据分析_小案例-使用python进行销售数据分析
数据分析步骤:提出问题.理解数据.数据清洗.构建模型.数据可视化 数据:朝阳医院2018年销售数据 一.提出问题 从销售数据中分析以下业务指标:月均消费次数.月均消费金额.客单价.消费趋势 二.理解数 ...
- python支持向量机 股票_小蛇学python(4)利用SVM预测股票涨跌
最近接了一个私活,指导学妹完成毕业设计.核心思想就是利用SVM模型来预测股票涨跌,并完成策略构建,自动化选择最优秀的股票进行资产配置. 在做这个项目的过程中,我体会到想成为一个合格的数据分析或者数据挖 ...
- python蛇术_小蛇学python(16)numpy高阶用法
如果只是从事简单的数据分析,其实numpy的用处并不是很大.简单了解一下numpy,学好pandas已经够用,尤其是对于结构化或表格化数据.但是精通面向数组的编程和思维方式是成为python科学计算牛 ...
- python四瓣花代码_小蛇学python(14)K-means预测花朵种类
承接上一篇有关如何处理数据的文章,这一篇,我们来一次实战,让大家感受一下这个过程. Iris数据集是一个比较特别的数据集,早在1936年Ronald Fisher就将此数据集用于了数据挖掘实验.Fis ...
- python做测试小工具_自制快速冒烟测试小工具--基于python多线程(2)
原标题:自制快速冒烟测试小工具--基于python多线程(2) 新书 速递 文 |愈知愈无知 快速冒烟测试小工具-(1)分析及准备 三.代码实现-封装 1. 创建包和文件夹目录 Config:存放配置 ...
- 把python语言翻译出来_Python语言实现翻译小工具(Python打包成exe文件)
本文主要向大家介绍了Python语言实现翻译小工具(Python打包成exe文件),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 1.环境 windows10 python3.5 ...
- python英语翻译-python制作英语翻译小工具代码实例
这篇文章主要介绍了python制作英语翻译小工具代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 用python爬虫可以制作英语翻译小工具.来 ...
- python制作一个桌面小工具
python实现一个桌面小工具,制作一个桌面的便签提醒工具 参考代码:https://github.com/cosven/memo 参考链接:https://www.jb51.net/article/ ...
- 【kimol君的无聊小发明】—用python写截屏小工具
[kimol君的无聊小发明]-用python写截屏小工具 前言 一.技术实现 1. 相关库 2. 定义窗口 3. 绘制工具条 4. 定义事件函数 二.后续改进 写在最后 前言 今天我看了一下自己的文件 ...
最新文章
- Java虚拟机性能监控工具草览
- AI Studio中的视觉数据集合
- 获取最大轮廓 opencv
- mac golang grpc proto pb文件生成go文件.md
- 在div中设置文字与内部div垂直居中
- Java LocalDateTime类| 带示例的getDayOfWeek()方法
- 栈的顺序存储及实现(二)
- Visio 2007中进行数据库建模时如何显示字段类型以及概念名称
- c语言条件语序心得,C语言之精华总结.doc
- 符号Symbol介绍及应用
- 网络协议学习(B站观看最多)
- 图像分割库segmentation_models.pytorch
- jquery when Deferred
- 电脑输入法哪个最好用,提高工作效率就选它
- 最新Python 实现自动登录抖音(京东),实现滑块自动滑过
- 开闭原则的例子_开闭原则
- 为什么应届生比往届生好找工作
- 3.3 克拉默法则、体积和线性变换(第三章 行列式)
- Axure RP 8.1下载 +汉化
- Django之爱鲜蜂项目开发 day02 (二)