Python:smtplib 库高级用法举例和应用详解

Python:smtplib库高级用法举例和应用详解

Python 中的 smtplib 是一个强大且简单易用的模块,用于通过 Simple Mail Transfer Protocol(SMTP)发送电子邮件。该模块即使在现代各种高级邮件库出现的今天,仍然以其轻量和直接的特性提供了不可替代的功能。

模块介绍

smtplib 模块是 Python 的内置标准库之一,意味着无需额外安装,直接导入即可使用。该库提供了一组非常简洁的接口,用于连接 SMTP 服务器并发送邮件。适用于所有支持 Python 的环境。

适配的 Python 版本:smtplib 模块是 Python 标准库的一部分,支持 Python3 所有版本。

应用场景

smtplib 模块主要用于发送电子邮件,常见的应用场景包括:

  • 自动化邮件通知:在系统或应用程序中自动发送错误报告、通知等。
  • 批量邮件发送:电子邮件营销活动中用于发送大量邮件。
  • 报告生成与发送:定期自动生成业务报告并发送给相关人员。

安装说明

由于 smtplib 是 Python 的标准库之一,无需额外安装。只需要确保你已经安装了 Python3 即可。

1
2
# 确认Python3已安装
python3 --version

用法举例

示例 1:发送简单文本邮件

这个示例展示了如何使用 smtplib 发送一封简单的文本邮件。

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
import smtplib
from email.mime.text import MIMEText
from email.header import Header

# SMTP服务器地址
smtp_server = 'smtp.example.com'
# 发送者邮箱
from_addr = 'sender@example.com'
# 接收者邮箱
to_addr = 'receiver@example.com'
# SMTP登录账号和密码
username = 'sender@example.com'
password = 'your_password'

# 创建邮件内容
msg = MIMEText('你好,这是一封自动发送的邮件。', 'plain', 'utf-8')
msg['From'] = Header('自动发送', 'utf-8')
msg['To'] = Header('测试接收者', 'utf-8')
msg['Subject'] = Header('Python smtplib 测试邮件', 'utf-8')

try:
# 连接到SMTP服务器
server = smtplib.SMTP(smtp_server, 25)
server.login(username, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
print("邮件发送成功")
except smtplib.SMTPException as e:
print(f"邮件发送失败: {e}")
finally:
server.quit()

示例 2:发送带附件的邮件

这个示例展示了如何发送带有附件的邮件。

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
36
37
38
39
40
41
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

# SMTP服务器地址
smtp_server = 'smtp.example.com'
# 发送者邮箱
from_addr = 'sender@example.com'
# 接收者邮箱
to_addr = 'receiver@example.com'
# SMTP登录账号和密码
username = 'sender@example.com'
password = 'your_password'

# 创建多部分邮件内容
msg = MIMEMultipart()
msg['From'] = Header('自动发送', 'utf-8')
msg['To'] = Header('测试接收者', 'utf-8')
msg['Subject'] = Header('Python smtplib 附件邮件', 'utf-8')

# 邮件正文
body = MIMEText('你好,这是一封带附件的自动发送的邮件。', 'plain', 'utf-8')
msg.attach(body)

# 添加附件
with open('attachment.txt', 'rb') as f:
part = MIMEApplication(f.read())
part.add_header('Content-Disposition', 'attachment', filename='attachment.txt')
msg.attach(part)

try:
# 连接到SMTP服务器
server = smtplib.SMTP(smtp_server, 25)
server.login(username, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
print("邮件发送成功")
except smtplib.SMTPException as e:
print(f"邮件发送失败: {e}")
finally:
server.quit()

示例 3:使用 SSL 发送加密邮件

这个示例展示了如何使用 SSL/TLS 连接发送加密邮件。

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
import smtplib
from email.mime.text import MIMEText
from email.header import Header

# SMTP服务器地址
smtp_server = 'smtp.example.com'
# 发送者邮箱
from_addr = 'sender@example.com'
# 接收者邮箱
to_addr = 'receiver@example.com'
# SMTP登录账号和密码
username = 'sender@example.com'
password = 'your_password'

# 创建邮件内容
msg = MIMEText('你好,这是一封通过SSL连接发送的自动邮件。', 'plain', 'utf-8')
msg['From'] = Header('自动发送', 'utf-8')
msg['To'] = Header('测试接收者', 'utf-8')
msg['Subject'] = Header('Python smtplib SSL邮件', 'utf-8')

try:
# 连接到SSL SMTP服务器
server = smtplib.SMTP_SSL(smtp_server, 465)
server.login(username, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
print("邮件发送成功")
except smtplib.SMTPException as e:
print(f"邮件发送失败: {e}")
finally:
server.quit()

总结

smtplib 模块是一个功能强大、简单易用的邮件发送库,适用于各种应用场景。从简单的文本邮件到带附件的邮件,再到使用 SSL 加密的邮件,smtplib 都能轻松胜任。通过本文章的介绍和示例代码,希望您能更加熟练地使用 smtplib 来处理邮件发送任务。

如果您喜欢本文内容,强烈建议您关注我的博客【全糖冲击博客】。在这里,您可以找到所有 Python 标准库的详细使用教程,方便查询和学习。不仅如此,我还会不定期更新最新的编程技巧和实用工具,让您的编程之路更为顺畅。期待您的关注和支持!

软件版本可能变动

如果本文档不再适用或有误,请留言或联系我进行更新。让我们一起营造良好的学习氛围。感谢您的支持! - Travis Tang