You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Python自动邮件机器人(email bot)批量发送多封邮件?

Python批量发送邮件解决方案

原代码仅支持单封邮件发送,要实现一次发送5封及以上邮件,可通过以下两种方式实现:

方式1:一次性群发多封邮件给多个收件人

适合给批量收件人发送相同内容的邮件,支持隐藏收件人列表(避免互相看到邮箱):

import smtplib
import ssl
from email.message import EmailMessage

# 配置发件人信息
email_sender = '你的邮箱账号'
email_password = '你的邮箱授权码'  # 注意:Gmail需用应用专用密码,而非登录密码

# 收件人列表,可添加5个及以上邮箱
email_receivers = ['收件人1@xxx.com', '收件人2@xxx.com', '收件人3@xxx.com', '收件人4@xxx.com', '收件人5@xxx.com']

# 邮件主题与内容
subject = '批量测试邮件'
body = """
这是批量发送的测试邮件内容。
"""

em = EmailMessage()
em['From'] = email_sender
# 若允许收件人看到彼此邮箱,用To字段
em['To'] = ', '.join(email_receivers)
# 若需隐私群发,改用Bcc字段隐藏所有收件人
# em['Bcc'] = ', '.join(email_receivers)
em['Subject'] = subject
em.set_content(body)

# 创建SSL安全上下文
context = ssl.create_default_context()

# 登录并发送邮件
with smtplib.SMTP_SSL('smtp.gmail.com', 465, context=context) as smtp:
    smtp.login(email_sender, email_password)
    smtp.send_message(em)  # 用send_message适配EmailMessage对象,比sendmail更简洁

关键说明

  • 把单个收件人改成列表格式,用, '.join()转换为SMTP协议要求的字符串格式
  • 隐私群发优先用Bcc字段,避免收件人互相获取邮箱地址
  • Gmail用户必须开启两步验证,生成应用专用密码登录,不能用普通密码

方式2:循环发送多封独立邮件

适合给不同收件人发送个性化内容,或给同一收件人发送多封独立邮件:

import smtplib
import ssl
from email.message import EmailMessage

email_sender = '你的邮箱账号'
email_password = '你的邮箱授权码'

# 每封邮件的独立配置,可扩展至5封以上
email_list = [
    {'to': '收件人1@xxx.com', 'subject': '专属邮件1', 'body': '这是给收件人1的内容'},
    {'to': '收件人2@xxx.com', 'subject': '专属邮件2', 'body': '这是给收件人2的内容'},
    {'to': '收件人3@xxx.com', 'subject': '专属邮件3', 'body': '这是给收件人3的内容'},
    {'to': '收件人4@xxx.com', 'subject': '专属邮件4', 'body': '这是给收件人4的内容'},
    {'to': '收件人5@xxx.com', 'subject': '专属邮件5', 'body': '这是给收件人5的内容'},
]

context = ssl.create_default_context()

with smtplib.SMTP_SSL('smtp.gmail.com', 465, context=context) as smtp:
    smtp.login(email_sender, email_password)
    for mail_info in email_list:
        em = EmailMessage()
        em['From'] = email_sender
        em['To'] = mail_info['to']
        em['Subject'] = mail_info['subject']
        em.set_content(mail_info['body'])
        smtp.send_message(em)
        print(f"已发送邮件至 {mail_info['to']}")

关键说明

  • 每封邮件的收件人、主题、内容独立存储在字典列表中,循环遍历发送
  • 每次循环创建新的EmailMessage对象,确保邮件内容不互相干扰
  • 适合需要个性化内容的批量发送场景

额外注意事项

  • 短时间内发送大量邮件可能触发邮箱服务商的反垃圾机制,建议控制发送频率
  • 使用其他邮箱(如QQ、163)时,需替换对应的SMTP服务器地址和端口(例如QQ邮箱为smtp.qq.com:465)

内容的提问来源于stack exchange,提问作者ready press start

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 04:20:34