最常用的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, Attachment
import smtplib
import mimetypes
dm = 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 mimetypes
def 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 smtplib
import 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()
使用场景:
🔔🔔🔔
【烽火邮箱】:烽火邮箱是一款简洁高效的企业邮箱平台,新客户赠送免费企业邮箱,一个起卖、按月付费(低至9.9元);支持别名邮箱及群组邮箱,支持定制无限邮箱。高权重纯净IP池,系统自带反垃圾机制。
立即查看 >> :企业邮箱价格
【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务,专业研发定制邮件营销系统及邮件群发解决方案!蜂邮自研产品线主要分为标准版、外贸版、企业版、定制版,及邮件API邮件SMTP接口服务。
立即查看 >> :邮件发送价格
【AokSend邮件API】:专注触发式邮件API发送服务。15元/万封,发送验证码邮件、忘记密码邮件、通知告警邮件等,不限速。综合送达率99%、进箱率98%。触发邮件也叫事务性邮件或推送邮件,包含:验证码邮件、重置密码邮件、余额提醒邮件、会员到期邮件、账号认证邮件等!
立即查看 >> :邮件发送价格
- 批量发送邮件到多个地址
- 支持邮件群组发送
注意事项:
- 请确保所有发送地址都是活跃的地址。
- 如果邮件列表过大,建议使用
python-dotmailer的批量发送功能。
4. 批量发送邮件到多个邮件列表
在某些情况下,需要同时发送邮件到多个邮件列表。以下是实现批量发送的代码示例:
import smtplib
import 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 datetime
today = 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, Attachment
import smtplib
import 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 smtplib
import threading
mailing_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, Email
import smtplib
import logging
dm = 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. 发送自动回复
在某些情况下,发送邮件后需要接收者的回复。以下是实现自动回复的代码示例:
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%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格
