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