如何实现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
相关产品推荐
相关产品推荐

