Я использую Jupyter для создания отчетов в формате html, и я хотел бы иметь возможность отправлять эти отчеты по электронной почте с помощью smtplib. Мне удалось успешно отправить электронные письма, но я не смог получить отчет в формате html, чтобы прикрепить его или встроить в электронное письмо.
Код, который я использовал, выглядит так...
fromaddr = "[email protected]"
toaddr = "[email protected]"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "Automatic Weekly Report"
html = open("WeeklyReport.html")
part2 = MIMEText(html.read(), 'text/html')
msg.attach(part2)
server = smtplib.SMTP('smtp.gmail.com',587)
server.starttls()
server.login("[email protected]", "password")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()
Я думаю, что проблема в основном связана со средним битом, который я взял и изменил с https://docs.python.org/3.4/library/email-examples.html
html = open("WeeklyPnlReport.html")
part2 = MIMEText(html.read(), 'text/html')
msg.attach(part2)
Когда я запускаю этот код, я получаю электронное письмо, которое я открываю в Gmail, оно пустое и имеет вложение под названием «noname». Предварительный просмотр не работает, а загрузка приводит к тому, что мой компьютер не знает, каким файлом его открыть.
Если я изменю средний бит на:
part2 = MIMEText(html.read(), 'html')
Я получаю электронное письмо с надписью «сообщение вырезано», затем, когда я нажимаю «просмотреть все сообщение», открывается новая вкладка, содержащая html-текст отчета.
Если я бегу с:
part2 = MIMEText(html, 'html')
Я получаю сообщение об ошибке "Объект '_io.TextIOWrapper' не имеет атрибута 'encode'".
Я в настоящее время совсем потерял о том, что делать. По сути, я просто хочу, чтобы отчет в формате html был либо прикреплен к моему электронному письму, либо находился внутри электронного письма. Я просмотрел документацию MIMEText, но она довольно скудная и довольно сложная для меня. Я хотел бы узнать больше о том, как это работает, а точнее о том, как получить html-файл для встраивания в электронное письмо или прикрепления к нему.
Заранее спасибо.