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

如何在Python中发送隐藏收件人的多份邮件?

解决邮件收件人互相可见的问题

你当前代码的问题在于把所有收件人都塞进了To字段,所以每个收件人打开邮件时都能看到其他收件人的地址。要实现隐藏收件人,有两种靠谱的方法:

方法一:使用密送(Bcc)字段

密送字段里的收件人不会被其他收件人看到,只需调整邮件头的设置即可:

import smtplib
from email.message import EmailMessage

email_subject = "Good morning"
sender_email_address = "user@outlook.com"
receivers_email_address = ['reciever1@gmail.com', 'reciever2@gmail.com']
email_smtp = "smtp.office365.com"
email_password = "MyPassword"

# 创建邮件对象
message = EmailMessage()

# 配置邮件头
message['Subject'] = email_subject
message['From'] = sender_email_address
# 将To设为自己(或占位邮箱),避免收件人看到空的To字段
message['To'] = sender_email_address
# 用Bcc存放所有收件人,他们互相看不到对方地址
message['Bcc'] = receivers_email_address

# 读取HTML邮件内容
with open('message.html', 'r') as file:
   file_content = file.read()

# 设置HTML格式的邮件内容
message.set_content(file_content, subtype='html')

# 连接SMTP服务器
server = smtplib.SMTP(email_smtp, '587')
server.ehlo()
server.starttls()
server.login(sender_email_address, email_password)

# 发送邮件
server.send_message(message)

# 关闭连接
server.quit()

方法二:逐个单独发送邮件

这种方法会给每个收件人单独发送一封邮件,每封邮件的To字段只有对方自己的地址,完全避免信息泄露:

import smtplib
from email.message import EmailMessage

email_subject = "Good morning"
sender_email_address = "user@outlook.com"
receivers_email_address = ['reciever1@gmail.com', 'reciever2@gmail.com']
email_smtp = "smtp.office365.com"
email_password = "MyPassword"

# 提前读取HTML内容,避免重复打开文件
with open('message.html', 'r') as file:
   file_content = file.read()

# 连接SMTP服务器
server = smtplib.SMTP(email_smtp, '587')
server.ehlo()
server.starttls()
server.login(sender_email_address, email_password)

# 循环给每个收件人单独发邮件
for receiver in receivers_email_address:
    message = EmailMessage()
    message['Subject'] = email_subject
    message['From'] = sender_email_address
    message['To'] = receiver
    message.set_content(file_content, subtype='html')
    server.send_message(message)
    print(f"邮件已发送给 {receiver}")

# 关闭连接
server.quit()

注意事项

  • 使用Bcc时,部分邮箱服务商可能限制单次密送的人数,若收件人数量较多,建议优先用第二种方法。
  • 循环发送时不要过于频繁,避免触发邮箱的反垃圾邮件机制,必要时可添加短暂延时(如time.sleep(1))。

内容的提问来源于stack exchange,提问作者Juan Jose Acevedo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:50:44