Попытка отправить электронную почту, используя aws ses и прикрепить zip-файл в качестве вложения - PullRequest
1 голос
/ 02 июня 2019

Я пытаюсь использовать zip-файл, сохраненный в aws s3, в качестве вложения в электронное письмо, отправленное с использованием aws ses.

Идея, которую я имею, - получить zip-файл из s3, прочитать его и передать в boto3 send_raw_email () api.

zip_response = s3_client.get_object(
    Bucket='bucket name',
    Key='access_key.zip'
    )
zip_streambody = zip_response['Body'].read()

#adding the attachment for send_raw_email() operation
'Define attachment and encode using mime app'
att = MIMEApplication(open(ATTACHMENT, 'rb').read())

'header to tell email client to treat it as attachment and give it a name'
att.add_header(
    'Content-Disposition', 
    'attachment',
    filename=os.path.basename(ATTACHMENT)
)

Когда я делаю это, я получаю «ValueError: внедренный нулевой байт» в строке MIMEApplication. Почему это? Как это исправить? Любая помощь приветствуется.

1 Ответ

0 голосов
/ 02 июня 2019

Решено с помощью процедуры, указанной выше. Пример кода:

#main module
zip_response = s3_client.get_object(
    Bucket='bucket name',
    Key='access_key.zip'
    )
zip_streambody = zip_response['Body'].read()
call_function_in_module2(zip_streambody)

#module 2

call_function_in_module2(x)
#write the streambody beginning with correct zip headers, save zip as follows,
#give path to lambda temp storage, /tmp/zip_name.zip. Save path to var, ATTACHMENT  
with open('/tmp/my_key.zip', 'wb') as file:
        file.write(x)

#adding the attachment for send_raw_email() operation
'Define attachment and encode using mime app'
att = MIMEApplication(open(ATTACHMENT, 'rb').read())

'header to tell email client to treat it as attachment and give it a name'
att.add_header(
    'Content-Disposition', 
    'attachment',
    filename=os.path.basename(ATTACHMENT)
)

send_raw_email()

doc для примера кода ses send_raw_email (): https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html#send-email-raw-headers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...