Python 攻略二 ——使用Python发送邮件

前两天协助公司行政部门的洛枳进行了招聘,我们的行政在招聘的过程中需要大量的发送邮件,或者群发邮件,一封一封的重复的发送比较麻烦,也比较繁琐,所以今天分享一个用Python做的邮件发送工具来解决不停的重复劳动。请行政部的小伙伴关注。

言归正传,要做一个这样的邮件工具我们可以根据过程将项目拆分成3个版本来实现(这里是产品的迭代思维)
版本1.0:根据需求,调用相关的模块,然后给自己发一封最简单的邮件。
版本2.0:还是给自己发邮件,但邮件应该更完整,包括邮件的头部信息(就是发件人、邮件标题等),和正文内容。
版本3.0:从单一收件人,变成多收件人,也就是群发一封完整的邮件。

本帖先进行版本1.0的实现:
为了实现邮件的发送,我们需要用到Python中的smtplib和email这两个模块。其中smtplib是负责发送邮件的模块,而email是负责构建邮件内容的模块。

下面的内容就是需要用到smtplib模块的方法:

import smtplib

server = smtplib.SMTP()
server.connect(host, port)
server.login(username, password) 
server.sendmail(sender, to_addr, msg.as_string()) 
server.quit() 

其中,第一行是引入smtplib模块。第三行server是一个变量,smtplib.SMTP()是变量server的值,smtplib是模块的名称,SMTP()是一个简单邮件传输协议的类。第四行代码,连接(connect)指定的服务器,参数host是指定连接的邮箱服务器,参数post是我们需要指定SMTP服务使用的端口号。

以QQ邮箱为例这句可以写成这样

import smtplib

server = smtplib.SMTP_SSL(smtp_server)
server.connect('smtp.qq.com', 465)

提醒! QQ 邮箱一般默认关闭SMTP服务,我们得先去开启它。请打开https://mail.qq.com/ 登录你的邮箱。然后点击位于顶部的【设置】按钮,选择【账户设置】,然后下拉到这个位置。
file
就像上面的一样,把第一项服务打开。需要用密保手机发送短信,完成之后,QQ 邮箱会提供给你一个授权码,授权码的意思是,你可以不用QQ的网页邮箱或者邮箱客户端来登录,而是用邮箱账号+授权码获取邮箱服务器的内容。在你使用SMTP服务登录邮箱时,要输入这个授权码作为密码登录,而【不是】你的邮箱登录密码。
第五行代码,login是登录的意思就是登录你指定的服务器用的,需要输入两个参数:登录邮箱和授权码,把两个参数可以放在最前面。

username = 'xxx@qq.com'
password = '你的授权码数字'

server.login(username, password) 
#username:登录邮箱的用户名
#password:登录密码/授权码

第六行代码sendmail是“发送邮件”的意思,是发送邮件用的,sendmail()方法需要三个参数:发件人,收件人和邮件内容。这里的发件人from_addr与上面的username是一样的,都是你的登录邮箱,所以只用设置一次。

from_addr = 'xxx@qq.com'
to_addr = 'xxx@qq.com'

server.sendmail(from_addr, to_addr, msg.as_string()) 
#from_addr:邮件发送地址,就是上面的username
#to_addr:邮件收件人地址
#msg.as_string():为一个字符串类型 

msg.as_string()是一个字符串类型:as_string()是将发送的信息msg变为字符串类型。
最后一行代码,quit是“退出”的意思,就是退出服务器。

接下来就需要用到email模块构建邮件的正文内容,让这个程序跑起来。可以使用email模块导入包含纯文本、HTML内容、图片、附件等多种形式的内容。每种形式对应的导入方式是这样的:

from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart

下来使用email模块构建邮件内容:

from email.mime.text import MIMEText

msg = MIMEText('来自猿创的问候','plain','utf-8')

最后,将两部分代码按照 1.倒入模块,2.定义变量,3.使用方法 的代码结构合并,首先实现版本1.0

代码如下:

# smtplib 用于邮件的发信动作
import smtplib
from email.mime.text import MIMEText
# email 用于构建邮件内容

# 发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr = 'xxx@qq.com'
password = '你的授权码数字'

# 收信方邮箱
to_addr = 'xxx@qq.com'

# 发信服务器
smtp_server = 'smtp.qq.com'

# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
msg = MIMEText('来自猿创的问候','plain','utf-8')

# 开启发信服务,这里使用的是加密传输
server = smtplib.SMTP_SSL(smtp_server)
server.connect(smtp_server,465)
# 登录发信邮箱
server.login(from_addr, password)
# 发送邮件
server.sendmail(from_addr, to_addr, msg.as_string())
# 关闭服务器
server.quit()

至此一封简易的邮件就发送完成了。

讨论数量: 4

不明觉厉!

4年前

博哥沉迷于研发无法自拔

4年前

人事行政表示看不懂

4年前

一封简易的邮件看起来并不简单

4年前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!