Письма не отправляются людям в СЦ - PullRequest
21 голосов
/ 02 апреля 2012

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

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

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

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

Ответы [ 3 ]

37 голосов
/ 02 апреля 2012

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

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

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

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

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

4 голосов
/ 02 апреля 2012

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

0 голосов
/ 01 февраля 2019

Я получил ошибку ниже с TOADDR + CCADDR => Ошибка типа: может объединять только 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)
...