邮件未发送给抄送中的人员

问题描述 投票:0回答:4

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

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

FROMADDR = "[email protected]"
PASSWORD = 'foo'

TOADDR   = ['[email protected]', '[email protected]']
CCADDR   = ['[email protected]', '[email protected]']

# 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()

当我使用该脚本时,我看到邮件同时发送至

toaddr1
toadd2
然而
ccaddr1
ccaddr2
根本没有收到邮件。

有趣的是,当我查看

toaddr1
toadd2
收到的邮件时,显示:
ccaddr1
ccaddr2
存在于 CC 中。

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

python smtp smtplib
4个回答
53
投票

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

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

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

来自文档

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


5
投票

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


0
投票

我在使用 TOADDR+CCDDR 时遇到以下错误 => 类型错误:只能将 str (不是“列表”)连接到 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)

0
投票

我也有类似的问题:邮件既没有发送给抄送收件人,也没有发送给“收件人:”列表中的第一个收件人。任何想法?代码:

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

MAIL_SMTP_SERVER = 'mail.gmx.net'
MAIL_PORT = 465
MAIL_USERNAME = '[email protected]'
MAIL_PASSWORD = '***'

email_to = 'm1@sports_club.com, m2@music_club.com'
# will be delivered only to m1@sports_club.com; why?
email_from = '[email protected]'
email_cc = '[email protected]'
email_bcc = '[email protected]'
email_subject = 'my subject'
email_body = 'my body'

mime_message = MIMEMultipart('mixed')
mime_message["From"] = email_from
mime_message["To"] = email_to
mime_message["Cc"] = email_cc
mime_message["Bcc"] = email_bcc
mime_message["Subject"] = email_subject

mime_message.attach(MIMEText(email_body, "plain"))
email_string = mime_message.as_string()

context = ssl.create_default_context()
with smtplib.SMTP_SSL(MAIL_SMTP_SERVER, MAIL_PORT, context=context) as server:
    server.login(MAIL_USERNAME, MAIL_PASSWORD)
    return_dictionary = server.sendmail(email_from, (email_to + email_cc), email_string)
© www.soinside.com 2019 - 2024. All rights reserved.