Python教程发送邮件的10大经典示例


【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务。 查看价格
【AokSend邮件API】:触发式邮件API,15元/万封,99%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格
Python 教程:发送邮件的 10 大经典示例
随着 Python 在自动化领域的普及,邮件发送功能作为一种常见的需求,也在编程中越来越重要。无论是企业自动化、邮件营销还是日常事务处理,学会用 Python 撰写高效的邮件发送代码,都能大大提升工作效率。本文将通过 10 个经典示例,向你展示如何利用 Python 实现邮件发送功能。
1. 使用 smtplib
库快速发送邮件
smtplib
是 Python 标准库中用于发送电子邮件的库,它通过 SMTP 协议与邮件服务器通信。以下是使用 smtplib
库发送邮件的基本示例。
【烽火邮箱】:烽火邮箱是一款简洁高效的企业邮箱平台,新客户赠送免费企业邮箱,一个起卖、按月付费(低至9.9元);支持别名邮箱及群组邮箱,支持定制无限邮箱。高权重纯净IP池,系统自带反垃圾机制。
立即查看 >> :企业邮箱价格
【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务,专业研发定制邮件营销系统及邮件群发解决方案!蜂邮自研产品线主要分为标准版、外贸版、企业版、定制版,及邮件API邮件SMTP接口服务。
立即查看 >> :邮件发送价格
【AokSend邮件API】:专注触发式邮件API发送服务。15元/万封,发送验证码邮件、忘记密码邮件、通知告警邮件等,不限速。综合送达率99%、进箱率98%。触发邮件也叫事务性邮件或推送邮件,包含:验证码邮件、重置密码邮件、余额提醒邮件、会员到期邮件、账号认证邮件等!
立即查看 >> :邮件发送价格
示例代码
import smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMEText# 初始化邮件msg = MIMEMultipart()msg['From'] = 'your email address'msg['To'] = 'target email address'msg['Subject'] = '邮件标题'# 添加正文text = "邮件正文"part = MIMEText(text, 'plain')msg.attach(part)# 发送邮件server = smtplib.SMTP('smtp.example.com', 587)server.starttls() # 必要的,如果需要加密server.login('your email address', 'your password')server.sendmail('your email address', 'target email address', msg.as_string())server.quit()
关键点
smtplib
是实现邮件发送功能的最基础且高效的方式。- 适用于需要频繁发送邮件的场景,如自动化任务或mass发送。
应用场景
- 批量发送邮件
- 自动化邮件跟进
- 企业内部邮件发送
2. 使用 pywin32
库发送邮件给 Windows 用户
pywin32
是一个用于与 Windows 系统交互的 Python 库,可以用来发送邮件给 Windows 用户。以下是使用 pywin32
发送邮件的示例。
示例代码
from pywin32 import win32mail, win32print# 初始化邮件msg = win32mail.MAPIMessage()msg.To = 'target email address'msg.Subject = '邮件标题'msg.Body = '邮件正文'# 发送邮件win32mail.Send(msg, False, 0, False, False, True)
关键点
- 需要安装
pywin32
库,可以通过pip install pywin32
安装。 - 适用于 Windows 系统上的邮件发送,速度快且稳定。
应用场景
- 在 Windows 系统上发送邮件
- 企业内部邮件发送
- 用户认证邮件
3. 使用 python-mime
库创建自定义邮件
python-mime
是一个功能强大的库,可以用来创建复杂的 MIME 格式邮件。以下是使用 python-mime
库创建自定义邮件的示例。
示例代码
from CIMimeMessage import MIMEMessage, IMAPPart, ATTACHPart, RFC822Partfrom CIMimeMessage import HeaderName, ValueName# 初始化邮件msg = MIMEMessage()part = RFC822Part()part.add_header(HeaderName('Subject'), ValueName('邮件标题'))part.add_header(HeaderName('From'), ValueName('your email address'))part.add_header(HeaderName('To'), ValueName('target email address'))part.add_text('邮件正文')msg.add_part(part)# 添加附件with open('附件名', 'rb') as f: att = ATTACHPart() att.add_header(HeaderName('Content-Disposition'), ValueName(' attachment; filename="附件名"')) att.add Binary(f.read()) msg.add_part(att)# 发送邮件mail = IMAPPart()mail.add_header(HeaderName('Action'), ValueName('Send'))mail.add_header(HeaderName('To'), ValueName('target email address'))mail.add_header(HeaderName('Subject'), ValueName('邮件标题'))mail.add_header(HeaderName('Cc'), ValueName('cc@example.com'))mail.add_header(HeaderName('Bcc'), ValueName('bcc@example.com'))mail.add_header(HeaderName('Date'), ValueName('date'))mail.add_header(HeaderName('Message-ID'), ValueName('message-id'))mail.add_header(HeaderName('Content-Type'), ValueName('text/plain; charset="UTF-8"'))mail.add_header(HeaderName('Content-Disposition'), ValueName('inline; filename="message.html"'))mail.add_header(HeaderName('X-GM-Designation'), ValueName(''))mail.add_header(HeaderName('X-GM-Date'), ValueName(''))mail.add_header(HeaderName('X-GM-From'), ValueName('your email address'))mail.add_header(HeaderName('X-GM-To'), ValueName('target email address'))mail.add_header(HeaderName('X-GM-Cc'), ValueName('cc@example.com'))mail.add_header(HeaderName('X-GM-Bcc'), ValueName('bcc@example.com'))mail.add_header(HeaderName('X-GM-Subject'), ValueName('邮件标题'))mail.add_header(HeaderName('X-GM-Mime-version'), ValueName('1.0'))mail.add_header(HeaderName('X-GM-Content-Type'), ValueName('text/plain; charset="UTF-8"'))mail.add_header(HeaderName('X-GM-Content-Disposition'), ValueName('inline; filename="message.html"'))mail.add_header(HeaderName('X-GM-Return-path'), ValueName(''))mail.add_header(HeaderName('X-GM-Smtp-class'), ValueName(''))mail.add_header(HeaderName('X-GM-Smtp-data'), ValueName(''))mail.add_header(HeaderName('X-GM-Smtp-message-id'), ValueName(''))mail.add_header(HeaderName('X-GM-Smtp-from'), ValueName(''))mail.add_header(HeaderName('X-GM-Smtp-to'), ValueName(''))mail.add_header(HeaderName('X-GM-Smtp-cc'), ValueName(''))mail.add_header(HeaderName('X-GM-Smtp-bcc'), ValueName(''))mail.add_header(HeaderName('X-GM-Smtp-date'), ValueName(''))mail.add_header(HeaderName('X-GM-Smtp-message-id'), ValueName(''))mail.add_header(HeaderName('X-GM-Smtp-from'), ValueName(''))mail.add_header(HeaderName('X-GM-Smtp-to'), ValueName(''))mail.add_header(HeaderName('X-GM-Smtp-cc'), ValueName(''))mail.add_header(HeaderName('X-GM-Smtp-bcc'), ValueName(''))# 添加附件with open('附件名', 'rb') as f: att = ATTACHPart() att.add_header(HeaderName('Content-Disposition'), ValueName(' attachment; filename="附件名"')) att.add Binary(f.read()) msg.add_part(att)# 设置主题和正文msg.add_header(HeaderName('Subject'), ValueName('邮件标题'))msg.add_header(HeaderName('Body'), ValueName('邮件正文'))# 发送邮件mail.add_part(mail)msg.add_part(mail)# 模拟发送邮件(需要实际服务器配置)
关键点
python-mime
提供了高度可定制的邮件创建功能。- 需要手动设置邮件的各个字段,适合需要复杂配置的场景。
应用场景
- 需要高度定制的邮件格式
- 自定义邮件主题和正文
- 添加附件到邮件
4. 使用 pywin32
库发送邮件给 Outlook 用户
pywin32
也可以用来发送 Outlook 邮件,以下是使用 pywin32
发送 Outlook 邮件的示例。
示例代码
from pywin32 import win32com, win32print, win32mail# 初始化邮件win32mail.CompositeMessage msg = win32mail.MAPIMessage()win32mail.CompositeMessage msg.To = win32mail.UserAccount('target email address')win32mail.CompositeMessage msg.Subject = '邮件标题'win32mail.CompositeMessage msg.Body = '邮件正文'# 添加附件with open('附件名', 'rb') as f: win32mail.Attachment att = win32mail.Attachment() att.FileName = '附件名' att.Body = f.read() msg.AddPart(att)# 发送邮件win32mail.Send(msg, False, 0, False, False, True)
关键点
- 需要安装
pywin32
库 win32mail
提供了发送 Outlook 邮件的功能- 适用于在 Outlook 中发送邮件
应用场景
- 在 Windows 系统上发送 Outlook 邮件
- 添加附件到 Outlook 邮件
- 自动发送 Outlook 邮件
5. 使用 pyperclip
库发送邮件到剪贴板
pyperclip
是一个用于在 Python 中执行剪贴板操作的库,可以用来发送邮件到剪贴板。以下是使用 pyperclip
发送邮件到剪贴板的示例。
示例代码
import pyperclip# 初始化邮件msg = f"邮件标题


【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务。 查看价格
【AokSend邮件API】:触发式邮件API,15元/万封,99%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格