Python基础_06
一、邮件发送
-
Python提供了两个工具库: smtplib 和 email
email 构造邮件信息
smtplib 负责邮件发送发送邮件:
登录
利用Python程序通过邮箱服务器地址链接到邮箱服务器,借助smtp协议 通过用户名和授权码进行身份识别登录
邮件平台 发送邮件的服务器地址是??
发送邮件服务器: smtp.qq.com 使用SSL加密 端口号465或587
还有一个加密协议SSL【加密之前端口号25】
新浪:smtp.sina.com
163: smtp.163.com
126: smtp.126.com
登录认证
邮箱用户名【发件人】
用户授权码
写邮件
使用email库 构造邮件信息
可以编写普通邮件、HTML网页数据、带附件
发送
smtplib 发送指令
import smtplib
# host是服务器域名后ip地址 port端口号
connect = smtplib.SMTP_SSL(host='smtp.qq.com', port=465)
# user 用户名 password 授权码
connect.login(user='邮箱', password='授权码')
# 导入写邮件需要的工具
from email.mime.multipart import MIMEMultipart # 构造邮件
from email.mime.text import MIMEText # 构造邮件内容
# 构造一个份邮件
email = MIMEMultipart()
# 邮件的头部信息:收件人 发送人 主题 使用键值对形式添加
email['From'] = '' # 发件人
email['To'] = '' # 收件人
email['Subject'] = '' # 主题
# 书写正文
# _text 内容, _subtype='plain' 内容的类型 plain[纯文本] html[发送的数据为网页内容]
text = MIMEText('欢迎大家来到Python', 'plain')
# 把正文添加到邮件里
email.attach(text)
# 发送
# from_addr 发件人, to_addrs 收件人, msg 信息 【msg may be a string】
connect.sendmail(from_addr='',
to_addrs='',
msg=email.as_string())
# 断开与服务器的连接
connect.close()
二、邮件发送带有附件
# 导入工具库
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication # 构造附件
server = 'smtp.qq.com' # 邮箱服务器地址
port = 465
sender = '' # 发件人
reveivers = '' # 收件人
code = '' # 授权码
# 连接服务器 登录认证
connect = smtplib.SMTP_SSL(server, port)
connect.login(sender, code)
# 构造邮件
email = MIMEMultipart()
# 设置邮件头部
email['From'] = '' # 发件人
email['To'] = '' # 收件人名称用逗号隔开
email['Subject'] = '' # 主题
# 正文
text = MIMEText('今天很好', 'plain')
# 添加到邮件上
email.attach(text)
# 附件
# _data 附件的数据
# r 读取数据 rb代表的读取字节数据【图片 音视频都是字节数据】
handle = open('', 'rb') # 要发送的附件的地址
data = handle.read() # 把文件中的数据读取出来
app = MIMEApplication(data)
app['Content-Disposition'] = 'attachment; filename="sendmail.py"'
email.attach(app)
app1 = MIMEApplication(open('', 'rb').read())
# 设置附件的位置 及其 附件数据在邮箱的中显式的名称
# attachment 拼接的一部分
# filename 的值不允许包含中文
app1['Content-Disposition'] = 'attachment; filename=""'
# 把附件拼接到邮件上
email.attach(app1)
# 发送邮件
connect.sendmail(from_addr=sender, to_addrs=reveivers, msg=email.as_string())
# 断开连接
connect.close()
三、正文超链接邮件
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
server = 'smtp.qq.com' # 邮箱服务器地址
port = 465
sender = ''
reveivers = ''
code = '' # 授权码
connect = smtplib.SMTP_SSL(server, port)
connect.login(sender, code)
email = MIMEMultipart()
email['From'] = sender
email['To'] = reveivers
email['Subject'] = '超文本文件'
# 正文
# 需要写THML标签
"""
双标签【对标签】
<开始标签 属性名=属性值 属性名=属性值>内容</结束标签>
单标签
<标签名称 属性名=属性值 属性名=属性值/>
"""
# _subtype='html'
text = MIMEText(_text='<a herf="https://www.baidu.com">百度一下</a>', _subtype='html')
# 把它拼在邮件上
email.attach(text)
# 发送邮件
connect.sendmail(from_addr=sender, to_addrs=reveivers, msg=email.as_string())
connect.close()
四、读取html文档发送邮件
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
server = 'smtp.qq.com' # 邮箱服务器地址
port = 465
sender = ''
reveivers = ''
code = '' # 授权码
connect = smtplib.SMTP_SSL(server, port)
connect.login(sender, code)
email = MIMEMultipart()
email['From'] = sender
email['To'] = reveivers
email['Subject'] = '超文本文件'
content = open('', 'r', encoding='utf-8').read() html文件地址
text = MIMEText(_text=content, _subtype='html')
email.attach(text)
# 发送邮件
connect.sendmail(from_addr=sender, to_addrs=reveivers, msg=email.as_string())
# 断开连接
connect.close()