模块介绍email 模块是 Python 标准库的一部分,无需额外安装。它为邮件的创建、解析、操作和传输提供了强大的功能支持。这个模块遵循互联网邮件标准(RFC 2822),并扩展支持 MIME(多用途网际邮件扩展)文档格式。
适配 Python 版本email 模块在 Python 3.0 及其以后的版本中都提供支持。如果您使用的是 Python 3.x,可以直接使用该模块,无需额外配置。
应用场景email 模块主要用于两类场景:
邮件生成 :用于生成复杂的邮件内容,包括文本、HTML 和附件。邮件解析 :用于解析接收到的邮件,提取邮件主体、附件等内容。 具体应用方向自动化邮件系统 :如批量邮件发送、邮件通知等。邮件客户端开发 :处理服务器接收到的邮件并显示给用户。数据爬取和分析 :自动读取和分析邮箱中的数据。 安装说明email 模块是 Python 的内置标准库,无需单独安装。只需确保您使用的是 Python 3.0 及以上版本即可。
用法举例 示例一:生成一封简单的文本邮件1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import smtplib from email.message import EmailMessage msg = EmailMessage() msg.set_content('这是邮件正文' ) msg['Subject' ] = '邮件主题' msg['From' ] = 'you@example.com' msg['To' ] = 'friend@example.com' smtp_server = smtplib.SMTP('smtp.example.com' , 587 ) smtp_server.starttls() smtp_server.login('you@example.com' , 'your_password' ) smtp_server.send_message(msg) smtp_server.quit()
示例二:发送包含附件的邮件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 import smtplib from email.message import EmailMessage from email.utils import make_msgid import mimetypes msg = EmailMessage() msg['Subject' ] = '带附件的邮件' msg['From' ] = 'you@example.com' msg['To' ] = 'friend@example.com' msg.set_content('这是邮件正文,包含一个附件。' ) file_path = 'path/to/your/file.txt' mime_type, _ = mimetypes.guess_type(file_path) with open (file_path, 'rb' ) as file: msg.add_attachment(file.read(), maintype=mime_type.split('/' )[0 ], subtype=mime_type.split('/' )[1 ], filename='file.txt' ) smtp_server = smtplib.SMTP('smtp.example.com' , 587 ) smtp_server.starttls() smtp_server.login('you@example.com' , 'your_password' ) smtp_server.send_message(msg) smtp_server.quit()
示例三:解析接收到的邮件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 from email import policy from email.parser import BytesParser raw_email = b'...' msg = BytesParser(policy=policy.default).parsebytes(raw_email) subject = msg['subject' ] from_address = msg['from' ] to_address = msg['to' ] if msg.is_multipart(): for part in msg.iter_parts(): if part.get_content_type() == 'text/plain' : body = part.get_payload(decode=True ).decode('utf-8' ) break else : body = msg.get_payload(decode=True ).decode('utf-8' ) print ("Subject:" , subject)print ("From:" , from_address)print ("To:" , to_address)print ("Body:" , body)
在这些示例中,我们展示了利用 email 模块进行邮件生成、发送和解析的多种方法,覆盖了从简单文本邮件到复杂带附件邮件的实际应用。
强烈建议大家关注本人的博客 全糖冲击博客 。在这里,您能找到所有 Python 标准库的使用教程,方便您在开发过程中查阅和学习。无论是初学者还是高级开发者,都能受益于我们详尽的教程和实时更新的内容。点击关注,不错过任何一个提升编程技巧的机会!
软件版本可能变动
如果本文档不再适用或有误,请留言或联系我进行更新。让我们一起营造良好的学习氛围。感谢您的支持! - Travis Tang