一. 邮件发送基本流程
生活中发送邮件的步骤:
注册邮箱信息 —> 打开登录邮箱的网址 —> 输入账号密码完成登录 —> 构建邮件 —> 发送邮件
-
导入发送邮件需要的所有的库
# 连接邮箱服务器,登录邮箱和发送邮件的模块 import smtplib # 导入邮件相关的库 from email.mime.multipart import MIMEMultipart from email.header import Header from email.mime.text import MIMEText
-
准备邮箱账号和授权码
username = ‘登录邮箱账号’
mandate_code = ‘授权码’
授权码获取方式见文末
-
连接邮箱服务器
con = smtplib.SMTP_SSL(‘smtp.xx.com’)
(固定内容,xx中填写登录的邮箱,例如:使用qq邮箱登录——‘smtp.qq.com’,使用163邮箱登录——‘smtp.163.com’)
-
登录邮箱,输入账号和授权码
con.login(uesrname, mandate_code)
-
构建邮件
1)创建邮件对象(创建空邮件)
msg = MIMEMultipart()
2)添加邮件主题
header = Header(‘邮件主题’, ‘utf-8’).encode()
msg[‘Subject’] = header
3)设置发件人显示信息
sender = f’{username}<{username}>’
msg[‘From’] = sender
4)设置收件人信息
receiver = ’ 收件人邮箱 ’
msg[‘To’] = receiver
5)构建邮件正文
content = MIMEText(‘邮件正文内容’, ‘plain’, ‘utf-8’)
msg.attach(content)
-
发送邮件
con.sendmail(username, '收件人邮箱 ', msg.as_string())
-
关闭邮箱
con.quit()
案例:
# 0. 导入发送邮件需要的所有的库
# 连接邮箱服务器,登录邮箱和发送邮件的模块
import smtplib
# 导入邮件相关的库
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
# 1. 准备邮箱账号和授权码
username = '36677@qq.com' # 随便敲的,勿深究,请输入自己所需登录的邮箱账号
mandate_code = 'sdfggfd' # 复制授权码
# 2. 连接邮箱服务器
con = smtplib.SMTP_SSL('smtp.qq.com') # 连接qq邮箱服务器
# 3.登录邮箱,输入账号和授权码
con.login(username, mandate_code)
# 4. 构建邮件
# 1)创建邮件对象(创建空邮件)
msg = MIMEMultipart()
# 2)添加邮件主题
header = Header('邮件主题', 'utf-8').encode()
msg['Subject'] = header
# 3)设置发件人显示信息
sender = f'{
username}<{
username}>'
msg['From'] = sender
# 4)设置收件人信息
receiver = 'yu@163.com' # 收件人邮箱
msg['To'] = receiver
# 5)构建邮件正文
content = MIMEText('邮件正文内容', 'plain', 'utf-8')
msg.attach(content)
# 5.发送邮件
con.sendmail(username, 'yu@163.com', msg.as_string())
# 6.关闭邮箱
con.quit()
发送邮件结果:
二. 添加文件附件
file = open(‘xx1’, ‘rb’).read()
att = MIMEText(file1, ‘base64’, ‘utf-8’)
att[‘Content-Disposition’] = ‘attachment; filename=“xx2”’
msg.attach(att)xx1——需要发送为附件的文件
xx2——发送为附件的名字,最好不要是文字,可能会无法显示
案例:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
# 1.准备账号和授权码
username = '16677@qq.com'
mandate_code = 'dghjkk'
# 2.连接邮箱服务器
con = smtplib.SMTP_SSL('smtp.qq.com')
# 3.完成邮箱登录
con.login(username, mandate_code)
# 4.构建邮件
msg = MIMEMultipart()
# 1)主题
header = Header('发送附件', 'utf-8')
msg['Subject'] = header
# 2)收件人
receiver = 'yu@163.com'
msg['To'] = receiver
# 3)发件人
sender = f'{
username}<{
username}>'
msg['From'] = sender
# 4)正文
content = MIMEText('请查看附件', 'plain', 'utf-8')
msg.attach(content)
# 5) ---------------------------添加附件--------------------------------
file1 = open