Python-邮件收发
介绍
这里介绍两种方法:
- 利用外部 SMTP 服务器发送邮件
- 以本身作为 SMTP 服务器发送邮件
利用外部 SMTP 服务器
用 smtplib
库, 其为 Python 标准库中发送邮件的简单接口.
步骤:
- 创建 SMTP 连接
- 登录 SMTP
- 设置邮件信息
- 发送邮件
- 断开 SMTP 连接
这里以 QQ 的 SMTP 服务器为例, 需要先获取自己账号的 “授权码” 以登录:
1 |
|
smtplib.SMTP_SSL(host, port)
, 第一个参数指定 SMTP 服务器地址, 第二个参数指定端口server.login(email, code)
, 第一个参数为用来发送邮件的邮箱, 第二个是其对应的授权码server.send_message(msg)
, 发送具体内容, 要发送的邮件需要包含Subject
,From
,To
这几个键值
发送图片附件
相比上述多出的步骤:
- 声明 message 为 Multipart, 并通过
attach
方法添加内容 - 用
email.mime.image
中的MIMEImage
处理图片1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.mime.text import MIMEText
def main():
# 与发送服务器通信需完成发送服务器相关设置:
# 对于 QQ 邮箱为: smtp.qq.com, SSL, port 465 或 587
server = smtplib.SMTP_SSL('smtp.qq.com', 465)
# 登陆
server.login("12345678@qq.com", "xxxxxYourCodeHere")
# 构建邮件内容
msg = MIMEMultipart()
msg['Subject'] = 'Test Email with Attachment'
msg['From'] = "12345678@qq.com"
msg['To'] = "2222222@qq.com"
# 添加文本内容
msg.attach(MIMEText("Please find the attached image.", 'plain'))
# 添加图片附件
with open('./test.png', 'rb') as f:
image = MIMEImage(f.read())
image.add_header('Content-Disposition', 'attachment', filename='example.jpg')
msg.attach(image)
# 发送信息
server.send_message(msg)
# 退出
server.quit()
if __name__ == "__main__":
main()
发送 PDF
1 |
|
本身作为 SMTP 服务器
后面有机会写.
Python-邮件收发
http://example.com/2024/08/21/Python-邮件收发/