Я пытаюсь отправить файл csv в виде вложения с помощью простой функции в python 3.6.Отправка сообщения электронной почты через электронную библиотеку Python вызывает ошибку «ожидаемая строка или байтоподобный объект»
from email.message import Message
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
def email():
msg = MIMEMultipart()
msg['Subject'] = 'test'
msg['From'] = '[email protected]'
msg['To'] = '[email protected]'
msg.preamble = 'preamble'
with open("test.csv") as fp:
record = MIMEText(fp.read())
msg.attach(record)
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login("[email protected]", "password")
server.sendmail("[email protected]", "[email protected]", msg)
server.quit()
Вызов email()
производит ошибку expected string or bytes-like object
. Переопределение server.sendmail("[email protected]", "[email protected]", msg)
как server.sendmail("[email protected]", "[email protected]", msg.as_string())
вызывает отправку электронного письма, но отправляет файл csv в тело письма, а не как вложение. может ли кто-нибудь дать мне несколько указателей на то, как отправить файл csv в виде вложения?
Вы пытались добавить 'заголовок Content-Disposition' для вашей привязанности? 'msg.add_header ('Content-Disposition', 'attachment', filename = 'test.csv')' – Birne94
Является ли это ошибкой копирования/вставки или вы на самом деле не имеете '' 'на' msg ['From'] = «тест @ gmail.com'? –
Возможно [это] (http://stackoverflow.com/a/3363254/3220135) - это то, что вам нужно? – Aaron