【发布时间】:2015-06-22 00:17:54
【问题描述】:
我在这个问题上遇到了很大的问题——关于 SO 的另一个没有解决的问题在这里:Send Raw Email (with attachment) to Multiple Recipients
我的代码(有效)很简单:
def send_amazon_email_with_attachment(html, subject, now, pre):
dummy = 'test@example.com'
recipients = ['test1@exampl.ecom', 'test2@example.com', 'test3@example.com']
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 <test@example.com>'
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'] 将返回一个无法删除列表的错误(与发布的问题完全相同的错误)。传递以逗号分隔的字符串会导致 Amazon SES 问题在返回的 XML 中显示“非法电子邮件”。因为我只在特定情况下从 Amazon 收到错误,所以我相信这是程序在调用 API 之前出现的错误。
任何MIMEMultipart 专家有什么想法吗?
【问题讨论】:
-
我相信你的要求应该是可能的,尽管我现在没有时间整理一个完整的例子。查看 django-ses 软件包 implements send_messages() 如何快速向一长串收件人发送消息。编辑:实际上,也许不是——我看到 send_messages() 实际上在 email_messages 列表上循环。
-
如果您将“抄送”和“密件抄送”收件人与“收件人”收件人一起列出,则可以发送给多个收件人。见stackoverflow.com/questions/9974972/…
-
“现在”好像没用了?
标签: python email mime-types boto amazon-ses