最常用的10段Python邮件发送代码


【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务。 查看价格
【AokSend邮件API】:触发式邮件API,15元/万封,99%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格
最常用的10段Python邮件发送代码
随着互联网的快速发展,自动化处理任务已经成为编程开发中的重要一环。而在众多编程语言中,Python凭借其强大的生态系统和简便的语法,成为自动化任务的首选语言。而发送邮件作为一项常见的自动化任务,更是被广泛应用于商务、营销、学术等多个领域。在Python中,发送邮件可以使用多种库,如python-dotmailer
、pyMailer
等。本文将介绍最常用的10段Python邮件发送代码,并详细说明它们的使用场景和功能。
1. 使用python-dotmailer
库的邮件发送代码基础
python-dotmailer
是目前最流行的Python邮件发送库之一,支持多种邮件格式(如HTML、纯文本)和多种邮件客户端。以下是使用python-dotmailer
的基本代码示例:
from dotmailer import DotMailer, Email, Attachmentimport smtplibimport mimetypesdm = DotMailer( from_=‘你的邮件地址’, to=‘目标邮件地址’, subject=‘邮件主题’, body=‘邮件正文’, attach=Attachment( name=‘附件名’, filename=‘附件路径’, data=‘附件内容’, subtype=‘application/octet-stream’ ))# 发送邮件dm.send()# 发送失败时的处理dm.retry()
使用场景:
- 批量发送邮件
- 支持附件上传
- 支持多种邮件格式
注意事项:
- 请确保目标邮件地址是可发送的。
- 如果目标地址不可用,
python-dotmailer
会自动跳转到下一个地址。 - 请确保邮件服务器的配置(如
SMTP
端口、认证信息)正确。
2. 处理邮件附件大小限制的代码
在发送邮件时,附件的大小通常有一个上限(如Gmail
的限制是5MB)。以下是处理附件大小限制的代码示例:
import mimetypesdef get_attachment_size(attachment): if not mimetypes.is ATTachment(attachment): return 0 return int(attachment['Content-Length'].split()[1])# 删除超过限制的附件for att in attachments: if get_attachment_size(att) > 5000000: os.remove(att['filename'])# 重新发送邮件dm.send()
使用场景:
- 删除超大附件
- 确保附件大小符合邮件服务器的要求
3. 循环发送邮件到一个邮件列表
在营销邮件中,经常需要发送邮件到一个包含多个地址的列表中。以下是实现循环发送的代码示例:
import smtplibimport mimetypes# 邮件列表mailing_list = [ ‘地址1@公司.com’, ‘地址2@公司.com’, ‘地址3@公司.com’]# 发送邮件for address in mailing_list: server = smtplib.SMTP(‘smtp.公司.com’, 587) server.starttls() server.login(‘你的账户名’, ‘你的密码’) msg = ‘邮件正文’ server.sendmail(‘发件人地址’, [address], msg) server.quit()
使用场景:
- 批量发送邮件到多个地址
- 支持邮件群组发送
注意事项:
- 请确保所有发送地址都是活跃的地址。
- 如果邮件列表过大,建议使用
python-dotmailer
的批量发送功能。
4. 批量发送邮件到多个邮件列表
在某些情况下,需要同时发送邮件到多个邮件列表。以下是实现批量发送的代码示例:
import smtplibimport mimetypes# 第一个邮件列表list1 = [ ‘地址1@公司.com’, ‘地址2@公司.com’, ‘地址3@公司.com’]# 第二个邮件列表list2 = [ ‘地址4@公司.com’, ‘地址5@公司.com’, ‘地址6@公司.com’]# 发送邮件server = smtplib.SMTP(‘smtp.公司.com’, 587)server.starttls()server.login(‘你的账户名’, ‘你的密码’)for addresses in [list1, list2]: for address in addresses: server.sendmail(‘发件人地址’, [address], ‘邮件正文’)server.quit()
使用场景:
- 同时发送邮件到多个列表
- 支持邮件批量发送
5. 自动生成邮件主题
为了提高邮件的专业性和可读性,可以使用python-dotmailer
自动生成邮件主题。以下是实现代码:
from datetime import datetimetoday = datetime.today().strftime(‘%Y-%m-%d’)subject = f‘邮件主题:{today}’dm = DotMailer( from_=‘你的邮件地址’, to=‘目标邮件地址’, subject=subject, body=‘邮件正文’)dm.send()
使用场景:
- 自动生成日期主题
- 支持自定义主题模板
6. 使用模板化邮件发送代码
在发送邮件时,模板化邮件正文可以提升专业性和一致性。以下是使用python-dotmailer
模板化发送邮件的代码示例:
from dotmailer import DotMailer, Email, Attachmentimport smtplibimport mimetypes# 邮件模板mailing_template = Email( to='目标邮件地址', subject='邮件主题', body='邮件正文')# 替换变量mailing_template.replace Variables( first_name='你的名字', last_name='你的姓氏')dm = DotMailer( from_=‘你的邮件地址’, to=‘目标邮件地址’, subject=‘邮件主题’, body=mailing_template)dm.send()
使用场景:
- 模板化邮件正文
- 支持动态替换变量
7. 使用多线程发送邮件
在发送大量邮件时,多线程可以显著提高效率。以下是实现多线程发送的代码示例:
import smtplibimport threadingmailing_list = [ ‘地址1@公司.com’, ‘地址2@公司.com’, ‘地址3@公司.com’]def send_email(address): server = smtplib.SMTP(‘smtp.公司.com’, 587) server.starttls() server.login(‘你的账户名’, ‘你的密码’) server.sendmail(‘发件人地址’, [address], ‘邮件正文’) server.quit()threads = []for address in mailing_list: threads.append(threading.Thread(target=send_email, args=(address,)))for thread in threads: thread.start()for thread in threads: thread.join()print('发送完毕!')
使用场景:
- 并行发送邮件
- 支持处理大量邮件
8. 发送邮件到多个邮件列表
在某些情况下,需要同时发送邮件到多个邮件列表。以下是实现代码:
import smtplib# 第一个邮件列表list1 = [ ‘地址1@公司.com’, ‘地址2@公司.com’, ‘地址3@公司.com’]# 第二个邮件列表list2 = [ ‘地址4@公司.com’, ‘地址5@公司.com’, ‘地址6@公司.com’]# 发送邮件server = smtplib.SMTP(‘smtp.公司.com’, 587)server.starttls()server.login(‘你的账户名’, ‘你的密码’)for addresses in [list1, list2]: for address in addresses: server.sendmail(‘发件人地址’, [address], ‘邮件正文’)server.quit()
使用场景:
- 同时发送邮件到多个列表
- 支持邮件批量发送
9. 发送邮件并监控状态
在发送邮件时,可以使用python-dotmailer
监控邮件发送状态。以下是实现代码:
from dotmailer import DotMailer, Emailimport smtplibimport loggingdm = DotMailer( from_=‘你的邮件地址’, to=‘目标邮件地址’, subject=‘邮件主题’, body=‘邮件正文’, attach=Attachment( name=‘附件名’, filename=‘附件路径’, data=‘附件内容’, subtype=‘application/octet-stream’ ))# 发送邮件dm.send()# 定义日志信息log = logging.getLogger(__name__)log.info(f‘发送状态:发送成功’)# 设置重试策略dm.retry()# 定义日志信息log.info(f‘发送状态:发送失败,重试中’)
使用场景:
- 监控邮件发送状态
- 支持邮件重试功能
10. 发送自动回复
在某些情况下,发送邮件后需要接收者的回复。以下是实现自动回复的代码示例:
🔔🔔🔔 【烽火邮箱】:烽火邮箱是一款简洁高效的企业邮箱平台,新客户赠送免费企业邮箱,一个起卖、按月付费(低至9.9元);支持别名邮箱及群组邮箱,支持定制无限邮箱。高权重纯净IP池,系统自带反垃圾机制。
立即查看 >> :企业邮箱价格
【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务,专业研发定制邮件营销系统及邮件群发解决方案!蜂邮自研产品线主要分为标准版、外贸版、企业版、定制版,及邮件API邮件SMTP接口服务。
立即查看 >> :邮件发送价格
【AokSend邮件API】:专注触发式邮件API发送服务。15元/万封,发送验证码邮件、忘记密码邮件、通知告警邮件等,不限速。综合送达率99%、进箱率98%。触发邮件也叫事务性邮件或推送邮件,包含:验证码邮件、重置密码邮件、余额提醒邮件、会员到期邮件、账号认证邮件等!
立即查看 >> :邮件发送价格
import smtplib# 发送邮件server = smtplib.SMTP(‘smtp.公司.com’, 587)server.starttls()server.login(‘你的账户名’, ‘你的密码’)server.sendmail(‘发件人地址’, ‘目标邮件地址’, ‘邮件正文’)# 设置自动回复server.sendmail(‘发件人地址’, ‘目标邮件地址’, ‘自动回复邮件正文’)server.quit()
使用场景:
- 发送自动回复
- 支持邮件自动回复功能
以上是使用Python发送邮件的10种常用代码和示例。这些代码可以灵活组合,以满足不同的自动化需求。如果你有更具体的需求或遇到问题,可以参考上述代码并根据实际情况进行调整。


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