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

Python通过SMTP向收件人列表发信仅首个收件人可收到问题求助

问题原因分析

你遇到的问题本质是第三方邮件库Dmail的send()方法实现缺陷:该方法的第二个位置参数仅会取列表的第一个元素作为实际提交给SMTP服务器的收信地址,其余地址仅会被渲染到邮件头部的收件人显示栏,不会触发实际的发信流程,因此会出现收件人栏显示多地址但仅第一个地址收到邮件的情况。你之前尝试的列表转字符串、追加符号的操作仅会修改邮件头显示内容,不会影响实际发信逻辑,因此无效。

可行解决方案
  • 方案1:遍历收件人列表单独发信
    如果不需要收件人看到其他收件人地址,可循环调用send()方法分别发信,代码示例:
from Dmail import Email
sender_email = 'sender@email.com'
email_list = ['name@email.com', 'name2@email.com']

with Email(mail_server="smtp.myserver.org", sender_email=sender_email, mail_port=25, mail_use_ssl=False,
       mail_use_tls=False) as email:
    for recipient in email_list:
        email.send("Test Body", recipient, subject="test")
  • 方案2:调整Dmail传参方式
    部分版本的Dmail支持通过to_addrs关键字参数传入收件人列表,修改调用方式即可:
from Dmail import Email
sender_email = 'sender@email.com'
email_list = ['name@email.com', 'name2@email.com']

with Email(mail_server="smtp.myserver.org", sender_email=sender_email, mail_port=25, mail_use_ssl=False,
       mail_use_tls=False) as email:
    email.send("Test Body", to_addrs=email_list, subject="test")
  • 方案3:替换为Python标准库smtplib实现
    如果Dmail无法满足需求,可直接使用标准库实现批量发信,兼容性更高:
import smtplib
from email.mime.text import MIMEText
from email.header import Header

sender_email = 'sender@email.com'
email_list = ['name@email.com', 'name2@email.com']

# 构造邮件内容
message = MIMEText('Test Body', 'plain', 'utf-8')
message['From'] = Header(sender_email)
message['To'] = Header(','.join(email_list))
message['Subject'] = Header('test', 'utf-8')

# 发信逻辑
try:
    smtp_obj = smtplib.SMTP('smtp.myserver.org', 25)
    # sendmail方法第二个参数直接传入收件人列表即可实现批量发送
    smtp_obj.sendmail(sender_email, email_list, message.as_string())
    print("邮件发送成功")
except smtplib.SMTPException as e:
    print(f"发信失败:{e}")
finally:
    if 'smtp_obj' in locals():
        smtp_obj.quit()
注意事项
  • 不要自行将收件人列表拼接为带逗号/分号的字符串传入发信参数,绝大多数SMTP服务端不识别该格式,会直接判定为无效地址。
  • 批量发信时控制发信频率,避免触发SMTP服务器的反垃圾邮件规则导致发信权限被限制。

内容的提问来源于stack exchange,提问作者smitty_werben_jagerm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:45:04