在小工具这个系列里记录一些我使用简易代码实现的一些小功能,方便自己在以后有需求的时候查看和调用,同时会讲解这些小功能实现实现过程,基础向,有需求或者感兴趣的朋友不妨上手试试。

涉及包及项目结构介绍

本次介绍的是使用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群发邮件相关推荐

  1. python换脸完整程序_小 200 行 Python 代码做了一个换脸程序

    原标题:小 200 行 Python 代码做了一个换脸程序 简介 在这篇文章中我将介绍如何写一个简短(200行)的 Python 脚本,来自动地将一幅图片的脸替换为另一幅图片的脸. 这个过程分四步: ...

  2. python营业数据分析_小案例-使用python进行销售数据分析

    数据分析步骤:提出问题.理解数据.数据清洗.构建模型.数据可视化 数据:朝阳医院2018年销售数据 一.提出问题 从销售数据中分析以下业务指标:月均消费次数.月均消费金额.客单价.消费趋势 二.理解数 ...

  3. python支持向量机 股票_小蛇学python(4)利用SVM预测股票涨跌

    最近接了一个私活,指导学妹完成毕业设计.核心思想就是利用SVM模型来预测股票涨跌,并完成策略构建,自动化选择最优秀的股票进行资产配置. 在做这个项目的过程中,我体会到想成为一个合格的数据分析或者数据挖 ...

  4. python蛇术_小蛇学python(16)numpy高阶用法

    如果只是从事简单的数据分析,其实numpy的用处并不是很大.简单了解一下numpy,学好pandas已经够用,尤其是对于结构化或表格化数据.但是精通面向数组的编程和思维方式是成为python科学计算牛 ...

  5. python四瓣花代码_小蛇学python(14)K-means预测花朵种类

    承接上一篇有关如何处理数据的文章,这一篇,我们来一次实战,让大家感受一下这个过程. Iris数据集是一个比较特别的数据集,早在1936年Ronald Fisher就将此数据集用于了数据挖掘实验.Fis ...

  6. python做测试小工具_自制快速冒烟测试小工具--基于python多线程(2)

    原标题:自制快速冒烟测试小工具--基于python多线程(2) 新书 速递 文 |愈知愈无知 快速冒烟测试小工具-(1)分析及准备 三.代码实现-封装 1. 创建包和文件夹目录 Config:存放配置 ...

  7. 把python语言翻译出来_Python语言实现翻译小工具(Python打包成exe文件)

    本文主要向大家介绍了Python语言实现翻译小工具(Python打包成exe文件),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 1.环境 windows10 python3.5 ...

  8. python英语翻译-python制作英语翻译小工具代码实例

    这篇文章主要介绍了python制作英语翻译小工具代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 用python爬虫可以制作英语翻译小工具.来 ...

  9. python制作一个桌面小工具

    python实现一个桌面小工具,制作一个桌面的便签提醒工具 参考代码:https://github.com/cosven/memo 参考链接:https://www.jb51.net/article/ ...

  10. 【kimol君的无聊小发明】—用python写截屏小工具

    [kimol君的无聊小发明]-用python写截屏小工具 前言 一.技术实现 1. 相关库 2. 定义窗口 3. 绘制工具条 4. 定义事件函数 二.后续改进 写在最后 前言 今天我看了一下自己的文件 ...

最新文章

  1. Java虚拟机性能监控工具草览
  2. AI Studio中的视觉数据集合
  3. 获取最大轮廓 opencv
  4. mac golang grpc proto pb文件生成go文件.md
  5. 在div中设置文字与内部div垂直居中
  6. Java LocalDateTime类| 带示例的getDayOfWeek()方法
  7. 栈的顺序存储及实现(二)
  8. Visio 2007中进行数据库建模时如何显示字段类型以及概念名称
  9. c语言条件语序心得,C语言之精华总结.doc
  10. 符号Symbol介绍及应用
  11. 网络协议学习(B站观看最多)
  12. 图像分割库segmentation_models.pytorch
  13. jquery when Deferred
  14. 电脑输入法哪个最好用,提高工作效率就选它
  15. 最新Python 实现自动登录抖音(京东),实现滑块自动滑过
  16. 开闭原则的例子_开闭原则
  17. 为什么应届生比往届生好找工作
  18. 3.3 克拉默法则、体积和线性变换(第三章 行列式)
  19. Axure RP 8.1下载 +汉化
  20. Django之爱鲜蜂项目开发 day02 (二)

热门文章

  1. 入侵检测系统的原理与应用
  2. 阿里、美团、Oracle凭这套题不知道刷了多少人
  3. 公测与奥运同行,云服务总线CSB:“连”无边界
  4. 你的企业如何才能留住员工?
  5. Spring Boot项目实例——简易版商城管理系统
  6. 智能手机传感器到底有什么用
  7. 启动rabbitmq
  8. win11修改DNS | win11改如何修改DNS服务器地址
  9. python填充三角形颜色怎么输入_用Python填充三角形(海龟)
  10. 关闭colorbox刷新页面