Я использую пакет email
в Python для отправки некоторых писем. Я могу отправлять электронные письма с вложениями в формате .csv, но они всегда отображаются в верхней части письма. Однако мне нужно вставить вложение в таблицу, но я не могу понять, как это сделать. Я бы хотел, чтобы он выглядел так: Пример письма с вложением
Вот код, который я сейчас использую:
import smtplib
from email import encoders
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
msg = MIMEMultipart('alternative')
msg['From'] = 'from@example.com'
msg['To'] = 'to@example.com'
msg['Subject'] = 'Request'
with open('dataexample.csv') as attachment:
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
# Add header
part.add_header("Content-Disposition", f"attachment; filename= dataexample.csv",)
encoders.encode_base64(part)
msg.attach(part)
# html version of message
html = """
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
table {
border-collapse: collapse;
}
table, td {
border: 1px solid black;
}
</style>
</head>
<body>
<table style="width:100%;">
<tr>
<td>First Column First Row</b></td>
<td>Second Column First Row</td>
</tr>
<tr>
<td>First Column Second Row</td>
<td></td> # i want the csv file to be embedded in this cell of the table
</table>
</body>
</html>
"""
msg.attach(MIMEText(html, 'html'))
server = smtplib.SMTP(host='host', port=25)
server.send_message(msg)