Python自动发邮件的9个高效脚本技巧


【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务。 查看价格
【AokSend邮件API】:触发式邮件API,15元/万封,99%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格
Python 自动发邮件的 9 个高效脚本技巧
随着互联网的快速发展,自动化工具在各个领域的应用越来越广泛。而在工作和生活中,发送邮件仍然是一个必不可少的环节。然而,手动发送邮件不仅效率低下,还容易出错。幸运的是,Python 提供了多种库和脚本,可以帮助我们高效地自动化邮件发送过程。本文将介绍 9 个 Python 脚本技巧,帮助你轻松实现邮件自动化。
一、引言
在现代办公和日常生活中,发送邮件是处理信息的重要方式。然而,手动发送邮件不仅费时费力,还容易忽略某些细节。例如,可能忘记发送邮件、发送给错误的收件人,或者邮件内容不够专业。Python 提供了多种库和工具,可以简化邮件发送过程,甚至可以实现自动化。
本文将介绍 9 个 Python 脚本技巧,帮助你高效地自动化邮件发送。这些脚本涵盖了基础操作、批量处理、定时发送、个性化邮件等内容,适合不同场景的需求。
二、基础邮件发送:Hello-World 邮件脚本
1. 使用 pyperclip
库发送邮件
pyperclip
是一个轻量级的 Python 库,用于在文本内容之间复制和粘贴。你可以使用它来发送电子邮件。
代码示例:
import pyperclip# 收件人地址TO = '收件人地址@example.com'# 邮件主题SUBJECT = '邮件主题'# 邮件正文 body = '邮件正文'# 发送邮件 pyperclip.copy(body) pyperclip.paste(TO) pyperclip.send()
注意事项:
- 邮件客户端必须支持
pyperclip
库的功能。否则,脚本无法运行。 - 该脚本不支持附件的添加。
- 如果你使用 Outlook,可以使用
outlook
库(安装命令:pip install outlook414
)。
三、批量邮件发送:一次性给多个收件人发邮件
有时候,你需要一次性给多个收件人发送邮件。以下是一个 Python 脚本,可以实现这一功能。
代码示例:
import smtplibimport emailimport os# 邮件配置server = 'smtp.example.com'port = 587username = '发送者邮箱地址'password = '发送者邮箱的密码'# 收件人列表bcc收件人 = ['收件人1@example.com', '收件人2@example.com', ...]# 发送邮件 msg = email.message.Message() msg['To'] = ', '.join(bcc收件人) msg['Subject'] = '邮件主题'body = r''' 你好! 这是你的邮件内容。'''msg.set_header('Content-Type', 'text/html; charset=UTF-8')msg.set_header('Content-Disposition', 'inline, filename="邮件名称"')msg.add_header('Content-Disposition', 'attachment; filename="附件名"')# 将 body 替换为你的邮件内容part = email.mime.text.MimeText(body, 'html')msg.add(part)with smtplib.SMTP(server, port) as server: server.start(); server.login(username, password) server.sendmail(username, bcc收件人, msg.get体())server.quit()
注意事项:
bcc收件人
需要替换为实际的收件人地址。- 如果收件人数量较多,建议使用
xlsx
或csv
文件导入收件人列表。 - 如果你的邮件服务器不支持
HTML
格式的邮件,可以去掉Content-Type
头部。
四、带有附件的邮件发送
在许多情况下,发送带有附件的邮件是必要的。以下是一个 Python 脚本,可以实现这一点。
代码示例:
import smtplibimport emailimport os# 邮件配置server = 'smtp.example.com'port = 587username = '发送者邮箱地址'password = '发送者邮箱的密码'# 附件路径attachment_path = '附件路径'# 发送邮件 msg = email.message.Message() msg['To'] = '收件人地址@example.com' msg['Subject'] = '邮件主题'body = r''' 你好! 这是你的邮件内容。 附件: <a href="{{url('attachment; filename="{}")}}" download="{}">{}</a>'''.format(os.path.basename(attachment_path), attachment_path, os.path.basename(attachment_path))with smtplib.SMTP(server, port) as server: server.start() server.login(username, password) server.sendmail(username, ['收件人地址@example.com'], msg.get体())server.quit()
注意事项:
- 附件路径需要正确指向你的附件文件。
- 如果你的邮件服务器不支持附件的插入,可以去掉
body
中的附件部分。 - 附件文件名应该尽可能简洁,避免使用特殊字符。
五、批量处理邮件:一次性给多个收件人发邮件
如果你需要给多个收件人发送邮件,可以使用以下 Python 脚本。
🔔🔔🔔 【烽火邮箱】:烽火邮箱是一款简洁高效的企业邮箱平台,新客户赠送免费企业邮箱,一个起卖、按月付费(低至9.9元);支持别名邮箱及群组邮箱,支持定制无限邮箱。高权重纯净IP池,系统自带反垃圾机制。
立即查看 >> :企业邮箱价格
【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务,专业研发定制邮件营销系统及邮件群发解决方案!蜂邮自研产品线主要分为标准版、外贸版、企业版、定制版,及邮件API邮件SMTP接口服务。
立即查看 >> :邮件发送价格
【AokSend邮件API】:专注触发式邮件API发送服务。15元/万封,发送验证码邮件、忘记密码邮件、通知告警邮件等,不限速。综合送达率99%、进箱率98%。触发邮件也叫事务性邮件或推送邮件,包含:验证码邮件、重置密码邮件、余额提醒邮件、会员到期邮件、账号认证邮件等!
立即查看 >> :邮件发送价格
代码示例:
import smtplibimport emailimport os# 邮件配置server = 'smtp.example.com'port = 587username = '发送者邮箱地址'password = '发送者邮箱的密码'# 收件人列表bcc收件人 = ['收件人1@example.com', '收件人2@example.com', ...]# 发送邮件 msg = email.message.Message() msg['To'] = ', '.join(bcc收件人) msg['Subject'] = '邮件主题'body = r''' 你好! 这是你的邮件内容。'''part = email.mime.text.MimeText(body, 'html')msg.add(part)with smtplib.SMTP(server, port) as server: server.start() server.login(username, password) server.sendmail(username, bcc收件人, msg.get体())server.quit()
注意事项:
- 收件人数量较多时,建议使用
xlsx
或csv
文件导入收件人列表。 - 如果你的邮件服务器不支持
HTML
格式的邮件,可以去掉body
中的HTML
格式。
六、定时发送邮件:自动在固定时间发送邮件
有时候,你需要在固定时间发送邮件,例如提醒朋友或提醒自己某件事。以下是一个 Python 脚本,可以实现定时发送邮件。
代码示例:
from datetime import datetime, timedeltaimport smtplibimport emailimport time# 邮件配置server = 'smtp.example.com'port = 587username = '发送者邮箱地址'password = '发送者邮箱的密码'# 发送时间base_time = datetime.now()sent_time = base_time.time() + timedelta(hours=1)while True: current_time = datetime.now().time() if current_time >= sent_time.time(): # 发送邮件 msg = email.message.Message() msg['To'] = '收件人地址@example.com' msg['Subject'] = '邮件主题' body = r''' 你好! 这是你的邮件内容。 ''' part = email.mime.text.MimeText(body, 'html') msg.add(part) with smtplib.SMTP(server, port) as server: server.start() server.login(username, password) server.sendmail(username, ['收件人地址@example.com'], msg.get体()) print('邮件已发送') time.sleep(24 * 3600) # 每天重复一次 else: time.sleep(60) # 设置最大循环次数(可选) if time.time() > time.time() + 24*3600: break
注意事项:
- 确保你的邮件服务器支持
24
小时定时发送功能。 - 如果发送失败,可以手动检查邮件客户端的设置。
- 如果你使用 Outlook,可以使用
outlook
库(安装命令:pip install outlook414
)。
七、个性化邮件:带有签名和模板的邮件
如果你需要发送带有签名和模板的邮件,可以使用以下 Python 脚本。
代码示例:
import smtplibimport emailimport os# 邮件配置server = 'smtp.example.com'port = 587username = '发送者邮箱地址'password = '发送者邮箱的密码'# 发送邮件 msg = email.message.Message() msg['To'] = '收件人地址@example.com' msg['Subject'] = '邮件主题'body = r''' <body> <div class=" signature"> <p>你好!</p> <p>这是一个带有签名的邮件。</p> </div> </body>'''with smtplib.SMTP(server, port) as server: server.start() server.login(username, password) server.sendmail(username, ['收件人地址@example.com'], msg.get体())server.quit()
注意事项:
- 你可以根据需要修改
body
中的内容。 - 如果你使用的是 Outlook,可以使用
outlook
库(安装命令:pip install outlook414
)。
八、处理邮件失败的情况:邮件发送失败的应急方案
有时候,邮件发送可能会失败。以下是一个 Python 脚本,可以在邮件发送失败时发送提醒邮件。
代码示例:
import smtplibimport time# 邮件配置server = 'smtp.example.com'port = 587username = '发送者邮箱地址'password = '发送者邮箱的密码'# 发送提醒邮件 msg = email.message.Message() msg['To'] = '收件人地址@example.com' msg['Subject'] = '邮件发送失败的提醒'body = r''' 你好! 邮件发送失败,请检查网络或重试。'''with smtplib.SMTP(server, port) as server: try: server.sendmail(username, ['收件人地址@example.com'], msg.get体()) except: print('邮件发送失败') else: print('邮件已发送')time.sleep(60)
注意事项:
- 如果 you 邮件发送失败,可以手动检查邮件客户端的设置。
- 如果你使用 Outlook,可以使用
outlook
库(安装命令:pip install outlook414
)。
九、自动化邮件内容:自定义邮件内容的 Python 脚本
有时候,你需要自定义邮件内容,例如根据不同的收件人自动调整邮件内容。以下是一个 Python 脚本,可以实现这一点。
代码示例:
import smtplibimport emailimport os# 邮件配置server = 'smtp.example.com'port = 587username = '发送者邮箱地址'password = '发送者邮箱的密码'# 收件人信息bcc收件人 = ['收件人1@example.com', '收件人2@example.com', ...]# 发送邮件 msg = email.message.Message() msg['To'] = ', '.join(bcc收件人) msg['Subject'] = '邮件主题'# 自定义邮件内容def get_email_content(recipient): # 根据收件人调整内容 return f''' 你好! 这是你的邮件内容,收件人是 {recipient}。 '''body = email.mime.text.MimeText(get_email_content(bcc收件人[0]), 'html')msg.add(body)with smtplib.SMTP(server, port) as server: server.start() server.login(username, password) server.sendmail(username, bcc收件人, msg.get体())server.quit()
注意事项:
- 你可以根据需要修改
get_email_content
函数。 - 如果收件人数量较多,建议使用
xlsx
或csv
文件导入收件人信息。
结语
以上是 9 个 Python 脚本技巧,帮助你高效地自动化邮件发送。这些脚本涵盖了基础操作、批量处理、定时发送、个性化邮件等内容,适合不同场景的需求。通过这些脚本,你可以显著提高工作效率,减少手动操作的错误率。
如果你需要进一步优化这些脚本,可以参考以下资源:
希望这些脚本能为你带来帮助!


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