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

У меня есть следующий скрипт для отправки писем с использованием 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 и увидел тот же результат. То есть, независимо от того, является ли это учетной записью на моем текущем почтовом сервере или моей учетной записью Gmail в CC, получатель не получит почту, даже если люди в поле «Кому» получают ее правильно и имеют правильные адреса, указанные в поле CC


person Pulimon    schedule 02.04.2012    source источник


Ответы (3)


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

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

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

Из документов:

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

person brice    schedule 02.04.2012
comment
Здесь следует отметить еще одну важную вещь: требуемые аргументы — это строка адреса отправителя, список строк адреса получателя (пустая строка будет рассматриваться как список с 1 адресом) и строка сообщения. Убедитесь, что to_addr является объектом списка. - person Rishi; 17.04.2017

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

person Ignacio Vazquez-Abrams    schedule 02.04.2012
comment
Плохо... Спасибо за информацию :) - person Pulimon; 02.04.2012

Я получил ошибку ниже с TOADDR+CCADDR => TypeError: можно только конкатенировать 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)
person Omkar    schedule 01.02.2019