邮件没有被发送给CC的人

时间:2012-04-02 10:45:13

标签: python smtp smtplib

我有以下脚本用于使用python发送邮件

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import os

FROMADDR = "myaddr@server.com"
PASSWORD = 'foo'

TOADDR   = ['toaddr1@server.com', 'toaddr2@server.com']
CCADDR   = ['ccaddr1@server.com', 'ccaddr2@server.com']

# Create message container - the correct MIME type is multipart/alternative.
msg            = MIMEMultipart('alternative')
msg['Subject'] = 'Test'
msg['From']    = FROMADDR
msg['To']      = ', '.join(TOADDR)
msg['Cc']      = ', '.join(CCADDR)

# Create the body of the message (an HTML version).
text = """Hi  this is the body
"""

# Record the MIME types of both parts - text/plain and text/html.
body = MIMEText(text, 'plain')

# Attach parts into message container.
msg.attach(body)

# Send the message via local SMTP server.
s = smtplib.SMTP('server.com', 587)
s.set_debuglevel(1)
s.ehlo()
s.starttls()
s.login(FROMADDR, PASSWORD)
s.sendmail(FROMADDR, TOADDR, msg.as_string())
s.quit()

当我使用该脚本时,我发现邮件已发送到toaddr1toadd2 但是ccaddr1ccaddr2根本没有收到邮件。

有趣的是,当我查看toaddr1toadd2收到的邮件时,就会显示出来 CC中存在ccaddr1ccaddr2

脚本中是否有错误?最初我认为这可能是我的邮件服务器的问题。我尝试使用Gmail并看到相同的结果。也就是说,无论是我当前邮件服务器中的帐户还是CC中的我的Gmail帐户,收件人都不会收到邮件,即使“收件人”中的人员也是如此。字段正确接收并具有CC字段中提到的正确地址

3 个答案:

答案 0 :(得分:36)

我认为您在发送邮件时需要将CCADDR与TOADDR放在一起:

s.sendmail(FROMADDR, TOADDR+CCADDR, msg.as_string())

您正确地将地址添加到邮件中,但您也需要信封上的cc地址。

来自docs

  

注意 from_addr和to_addrs参数用于构造传输代理使用的邮件信封。

答案 1 :(得分:4)

您在邮件中指定了CC条目,但未在信封中指定。确保消息也发送到CC和BCC条目是您的职责。

答案 2 :(得分:0)

我遇到了TOADDR + CCADDR错误=> TypeError:只能将str(而不是“ list”)连接到str

我做了以下更改,并且对我有用。 它会成功发送带有附件的电子邮件-“收件人”,“抄送”和“密件抄送”。

toaddr = ['mailid_1','mailid_2']
cc = ['mailid_3','mailid_4']
bcc = ['mailid_5','mailid_6']
subject = 'Email from Python Code'
fromaddr = 'sender_mailid'
message = "\n  !! Hello... !!"

msg['From'] = fromaddr
msg['To'] = ', '.join(toaddr)
msg['Cc'] = ', '.join(cc)
msg['Bcc'] = ', '.join(bcc)
msg['Subject'] = subject

s.sendmail(fromaddr, (toaddr+cc+bcc) , message)