python怎么群发邮件_小工具:使用python群发邮件

这篇博客介绍了如何使用Python实现群发邮件,通过configparser读取配置文件,email和smtplib管理邮件发送。文章详细讲解了配置SMTP服务、创建配置文件、读取配置文件、编写邮件内容以及发送邮件的步骤,适合初学者实践。
摘要由CSDN通过智能技术生成

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

涉及包及项目结构介绍

本次介绍的是使用python实现群发邮件的一个小功能,其中使用到的包及其功能如下:

configparser:读取配置文件

email:管理电子邮件消息

smtplib:封装了smtp协议,用于发送电子邮件

sys:提供对解释器使用或维护的一些变量的访问

为了方便对不同功能的更改,将不同的功能实现通过不同的模块来实现,不同的文件及其对应的功能如下:

user.ini:存放发件人邮箱与授权码的配置文件

customers.ini:存放收件人邮件列表的配置文件

config.py:读取配置文件的模块

message.py编写邮件内容的模块

send.py:用于发送邮件的模块

邮箱SMTP服务设置

在使用python发送邮件时,首先需要中先使用开通自己邮箱里的SMTP服务,下面我们以QQ邮箱为例,简单介绍一下开启服务的方法.

1.首先进入QQ邮箱,打开设置界面;

c03682d8f4be

01.png

2.切换到邮箱设置下的账号界面;

c03682d8f4be

02.png

3.在以下的服务界面开启IMAP/SMTP服务,通过验证后你可以获得一个授权码,将其保存;

c03682d8f4be

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值