Письма не отправляются людям в СС

У меня есть следующий script для отправки писем с помощью 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()

Когда я использую script, я вижу, что почта доставляется как на toaddr1, так и на toadd2 Однако ccaddr1 и ccaddr2 не получают почту вообще.

Интересно, что когда я проверяю почту, полученную toaddr1 и toadd2, это показывает, что ccaddr1 и ccaddr2 присутствуют в CC.

Есть ли ошибка в script? Первоначально я думал, что это может быть проблемой для моего почтового сервера. Я попробовал это с Gmail и увидел тот же результат. То есть независимо от того, будет ли его учетная запись на моем текущем почтовом сервере или моей учетной записи Gmail в CC, получатель не получит почту, даже если люди в поле "Кому" получат ее правильно и имеют правильные адреса, упомянутые в поле CC

Ответы

Ответ 1

Я думаю, что вам нужно будет поставить CCADDR с помощью TOADDR при отправке почты:

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

Вы правильно добавляете адреса в свое сообщение, но вам понадобятся также адреса cc на конверте.

Из docs:

Примечание Параметры from_addr и to_addrs используются для создания огибающей сообщения, используемой транспортными агентами.

Ответ 2

Вы указали записи CC в сообщении, но не в конверте. Это ваша работа, чтобы убедиться, что сообщение также отправлено в записи CC и BCC.

Ответ 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)