Я имеющие большие проблемы со временем с этим issue-- другого вопроса о том, так что не решить ее здесь: Send Raw Email (with attachment) to Multiple RecipientsBoto SES - send_raw_email() несколько получателей
Моего код (который работает) просто :
def send_amazon_email_with_attachment(html, subject, now, pre):
dummy = '[email protected]'
recipients = ['[email protected]', '[email protected]', '[email protected]']
connS3 = S3Connection('IDENTIFICATION','PASSWORD')
b = connS3.get_bucket('BUCKET_NAME')
key = b.get_key('FILE_NAME.pdf')
temp = key.get_contents_as_string()
msg = MIMEMultipart('alternative')
msg['Subject'] = subject
msg['From'] = 'My Name <[email protected]>'
msg.preamble = 'Multipart message.\n'
part1 = MIMEText(u"Attached is the report", 'plain')
part2 = MIMEText(html, 'html')
msg.attach(part1)
msg.attach(part2)
part = MIMEApplication(temp) #read binary
part.add_header('Content-Disposition', 'attachment', filename='FILE_NAME.pdf')
msg.attach(part)
conn = boto.ses.connect_to_region('us-east-1', aws_access_key_id='AUTH_ID', aws_secret_access_key='AUTH_PW')
for recipient in recipients:
print recipient
msg['To'] = recipient
result = conn.send_raw_email(msg.as_string(), source=msg['From'], destinations=recipient)
но, есть предостережение ... это цикл для каждого получателя. Любые вариации этого не работают. Передача списка в msg['Bcc']
или msg['BCC']
вернет ошибку, которую список не может удалить (такая же точная ошибка, что и размещенный вопрос). Передача строки, разделенной запятыми, дает вопрос SAS от Amazon, говорящий «Незаконная электронная почта» в возвращаемом XML. Потому что я только получаю ошибку от Amazon в конкретных ситуациях, я убежден, что это ошибка с программой, прежде чем она ударит по их вызову API.
У любого MIMEMultipart
у экспертов есть идеи?
Я считаю, что то, о чем вы просите, должно быть возможным, хотя у меня нет времени собрать полный пример на данный момент. Посмотрите, как пакет django-ses [реализует send_messages()] (https://github.com/hmarr/django-ses/blob/master/django_ses/__init__.py#L157), который способен быстро отправлять сообщения в длинный списки получателей. Редактировать: на самом деле, может быть, нет - я вижу, что send_messages() на самом деле зацикливается на списке email_messages. –
Вы можете отправить нескольким получателям, если вы перечислите получателей 'cc' и 'bcc' с получателем 'to'. См. Http://stackoverflow.com/questions/9974972/mails-not-being-sent-to-people-in-cc – xbonez