Я пишу функцию для отправки электронной почты с вложением Excel. Но при вызове функции у меня возникают проблемы. Я AWS сервер, отправляющий электронное письмо. Я вставил свою функцию отправки электронной почты вместе с вызовом функции.
Функция электронной почты
import os
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
import boto3
from botocore.exceptions import ClientError
EMAIL_FROM = 'abc@gmail.com'
STAGE = os.getenv('STAGE')
ses = boto3.client('ses', 'eu-west-1')
def send(to: list, subject: str, body: str):
try:
ses.send_email(
Destination={
'ToAddresses': to
},
Message={
'Body': {
'Text': {
'Charset': 'UTF-8',
'Data': body,
},
},
'Subject': {
'Charset': 'UTF-8',
'Data': f"[{STAGE}] {subject}",
},
},
Source=EMAIL_FROM
)
except ClientError as e:
raise ValueError(e.response['Error']['Message'])
def send_with_attachment(to: list, subject: str, body: str, attachments: dict):
message = MIMEMultipart()
message['Subject'] = f"[K+N:{STAGE}] {subject}"
message['From'] = EMAIL_FROM
message['To'] = ','.join(to)
part = MIMEText(body)
message.attach(part)
# attachments
for filename, content in attachments.items():
part = MIMEApplication(str.encode(content))
part.add_header('Content-Disposition', 'attachment', filename=filename)
message.attach(part)
try:
ses.send_raw_email(
Source=message['From'],
Destinations=to,
RawMessage={
'Data': message.as_string()
}
)
except ClientError as e:
raise ValueError(e.response['Error']['Message'])
Функция вызова
send_with_attachment(
to='xyz@gmail.com',
subject='Report',
body='Test',
attachments={
open('Report.xlsx', 'rb')
}
)
Error : 'set' object has no attribute 'items'
У меня проблема при вызове функции. Любая помощь по решению проблемы.