【问题标题】:Mails not being sent to people in CC邮件未发送给 CC 中的人
【发布时间】:2012-04-16 00:39:25
【问题描述】:

我有以下使用 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 收到的邮件时,发现 ccaddr1ccaddr2 存在于 CC 中。

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

【问题讨论】:

    标签: python smtp smtplib


    【解决方案1】:

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

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

    您在邮件中正确添加了地址,但您还需要信封上的抄送地址。

    来自docs

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

    【讨论】:

    • 这里需要注意的更重要的一点是 - 所需的参数是一个发件人地址字符串,一个收件人地址字符串列表(裸字符串将被视为具有 1 个地址的列表),以及一个消息字符串。确保你有 to_addr 是一个列表对象。
    【解决方案2】:

    您在邮件中指定了抄送条目,但未在信封中指定。您的工作是确保消息也发送到抄送和密送条目。

    【讨论】:

    • 我的错...谢谢你的信息:)
    【解决方案3】:

    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)
    

    【讨论】:

      猜你喜欢
      • 2022-07-19
      • 1970-01-01
      • 2012-02-07
      • 2012-05-25
      • 1970-01-01
      • 2013-10-11
      • 2012-04-23
      • 1970-01-01
      • 2019-05-04
      相关资源
      最近更新 更多