【问题标题】:Boto SES - send_raw_email() to multiple recipientsBoto SES - send_raw_email() 给多个收件人
【发布时间】: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


【解决方案1】:

基本上,您需要使用 2 种不同的格式在 2 个不同的地方指定电子邮件收件人。

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['To'] = ', '.join(recipients)


    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')


    result = conn.send_raw_email(msg.as_string(), source=msg['From'], destinations=recipients)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-05
  • 2016-06-23
  • 1970-01-01
  • 1970-01-01
  • 2014-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多