Я пытаюсь написать сервис AWS Lambda с использованием Python 2.7, который сгенерирует файл CSV в памяти и отправит его по электронной почте в виде вложения. Я чувствую, что я близок к этому сценарию на основе того, что я узнал, но я не совсем там.
# Import smtplib for the actual sending function
import smtplib
import sys
import csv
import cStringIO
from os.path import basename
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
# Import the email modules we'll need
server = smtplib.SMTP('smtp.postmarkapp.com', 587)
server.starttls()
server.login('.....','.....')
list = []
row1 = ["One","Two","Three"]
list.append(row1)
msg = MIMEMultipart()
msg['To'] = "daniel@mydomain.com"
msg['From'] = "noreply@mydomain.com"
msg['Subject'] = "DG Test subject"
msg.attach(MIMEText("Test Message"))
csv_buffer = cStringIO.StringIO()
writer = csv.writer(csv_buffer, lineterminator='\n')
writer.writerow(["1","2","3"])
for row in list:
writer.writerow(row)
print(csv_buffer.getvalue())
msg.attach(csv_buffer)
try:
response = server.sendmail(msg['From'], ["daniel@mydomain.com"],msg.as_string())
server.quit()
except AttributeError as error:
print(error)
else:
print(response)
Это дает мне следующую ошибку:
1,2,3
One,Two,Three
'cStringIO.StringO' object has no attribute 'get_content_maintype'
В основном все сводится к тому, что вы не знаете, как использовать объект csv_buffer
. Предполагая, что мне просто нужно как-то добавить этот атрибут к объекту, но я не совсем уверен, как. Если я пытаюсь добавить какие-либо дополнительные аргументы в строку .attach (), он жалуется, что у меня слишком много аргументов.
Спасибо!