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_server = 'smtp.example.com'
from_addr = 'sender@example.com'
to_addr = 'receiver@example.com'
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: 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_server = 'smtp.example.com'
from_addr = 'sender@example.com'
to_addr = 'receiver@example.com'
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: 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_server = 'smtp.example.com'
from_addr = 'sender@example.com'
to_addr = 'receiver@example.com'
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: 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