Я пытаюсь отформатировать письмо с помощью таблицы, используя библиотеку таблиц.
код, который у меня есть, выглядит следующим образом
with open('path_to_csv') as file:
data = pd.read_csv(file)
data = data.applymap(str)
print(data.dtypes)
print dtypes приводит к ...
vessel_name object
mmsi object
imo object
left_after object
left_before object
, что ожидается после .applymap(str)
. Затем
text = text.format(name=j, table=tabulate(data, stralign=("left",
"left",
"left",
"left",
"left"), headers=["Vessel name",
"MMSI",
"IMO",
"Left after (UTC)",
"Left before (UTC)"],
showindex=False, tablefmt="rst"))
html = html.format(name=j, table=tabulate(data, stralign=("left",
"left",
"left",
"left",
"left"), headers=["Vessel name",
"MMSI",
"IMO",
"Left after (UTC)",
"Left before (UTC)"],
showindex=False, tablefmt="html"))
и затем отправьте электронное письмо, используя smtplib
sendmail
message = MIMEMultipart("alternative", None, [MIMEText(text), MIMEText(html,'html')])
message["Subject"] = "xx"
message["From"] = sender['Parameter']['Value']
message["To"] = receiver
context = ssl.create_default_context()
recipients = receiver.split(',') + bcc.split(',')
with smtplib.SMTP_SSL("smtp.gmail.com", port, context=context) as server:
server.login(sender['Parameter']['Value'], password['Parameter']['Value'])
server.sendmail(
sender['Parameter']['Value'],
recipients,
message.as_string()
. Таблица в письме отформатирована таким образом:
, при этом некоторые столбцы «центрированы», а некоторые «выровнены по левому краю». Я пробовал numalign
и colalign
тоже, и они дают тот же эффект. Единственный последовательный результат - colallign='center'
, но это не то, чего я хочу. Есть идеи?