python:如何使用TO、CC和BCC发送邮件?

新手上路,请多包涵

出于测试目的,我需要用各种消息填充数百个电子邮件箱,并打算为此使用 smtplib。但除其他事项外,我不仅需要能够将消息发送到特定邮箱,还需要能够将消息发送到特定邮箱,还需要将它们抄送和密件抄送。看起来 smtplib 在发送电子邮件时不支持 CC-ing 和 BCC-ing。

寻找如何从 python 脚本发送消息的 CC 或 BCC 的建议。

(而且——不,我不会创建一个脚本来向我测试环境之外的任何人发送垃圾邮件。)

原文由 user63503 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

电子邮件标头对 smtp 服务器无关紧要。发送电子邮件时只需将 CC 和 BCC 收件人添加到 toaddrs 。对于 CC,将它们添加到 CC 标头。

 toaddr = 'buffy@sunnydale.k12.ca.us'
cc = ['alexander@sunydale.k12.ca.us','willow@sunnydale.k12.ca.us']
bcc = ['chairman@slayerscouncil.uk']
fromaddr = 'giles@sunnydale.k12.ca.us'
message_subject = "disturbance in sector 7"
message_text = "Three are dead in an attack in the sewers below sector 7."
message = "From: %s\r\n" % fromaddr
        + "To: %s\r\n" % toaddr
        + "CC: %s\r\n" % ",".join(cc)
        + "Subject: %s\r\n" % message_subject
        + "\r\n"
        + message_text
toaddrs = [toaddr] + cc + bcc
server = smtplib.SMTP('smtp.sunnydale.k12.ca.us')
server.set_debuglevel(1)
server.sendmail(fromaddr, toaddrs, message)
server.quit()

原文由 ABentSpoon 发布,翻译遵循 CC BY-SA 4.0 许可协议

关键是在您的 sendmail 调用中将收件人添加 _为电子邮件 ID 列表_。

 import smtplib
from email.mime.multipart import MIMEMultipart

me = "user63503@gmail.com"
to = "someone@gmail.com"
cc = "anotherperson@gmail.com,someone@yahoo.com"
bcc = "bccperson1@gmail.com,bccperson2@yahoo.com"

rcpt = cc.split(",") + bcc.split(",") + [to]
msg = MIMEMultipart('alternative')
msg['Subject'] = "my subject"
msg['To'] = to
msg['Cc'] = cc
msg.attach(my_msg_body)
server = smtplib.SMTP("localhost") # or your smtp server
server.sendmail(me, rcpt, msg.as_string())
server.quit()

原文由 helios 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题