Как положить файл из вложения письма в s3 бакет?
Прошу помощи в вопросе перекладки вложения, полученного с почты в s3 бакет
Использую такой код:
from exchangelib import DELEGATE, Account, Credentials, Configuration, UTC_NOW
from datetime import datetime, timedelta
import os, boto3
session = boto3.session.Session()
s3_connect = session.client(
service_name='',
endpoint_url=''
)
creds = Credentials(
username='',
password=''
)
config = Configuration(
server='',
credentials=creds
)
account = Account(
primary_smtp_address = '',
config = config,
autodiscover = False,
access_type = DELEGATE
)
period_default = UTC_NOW() - timedelta(days=1)
print(period_default)
mail_subfolder = account.inbox / ''
filter_messages = account.inbox.filter(
datetime_received__gt=period_default,
sender='',
subject__contains='',
has_attachments=True,
).only('sender', 'subject', 'attachments')
for item in filter_messages.order_by('-datetime_received')[:10]:
for attachment in item.attachments:
if attachment.name.endswith('.xlsx'):
fpath = os.path.join("/Users/user/Downloads/my_local_folder", attachment.name)
key_subdir = f'buc_subdir/buc_sub_subdir/{attachment.name}'
s3_connect.put_object(Bucket='mys3_bucket', Key=key_subdir, Body=attachment.name, StorageClass='COLD')
with open(fpath, 'wb') as path:
path.write(attachment.content)
else:
pass
# account.bulk_move(item, mail_subfolder)
item.move(mail_subfolder)
Не понимаю что подставить в Body т.к. в таком варианте в бакет записывается файл с контентом "имя файла".
Спасибо!
Источник: Stack Overflow на русском