Meine Eingabedatei ist eine CSV-Datei. Durch Ausführen eines Python-Skripts, das aus dem Python-Tabulate-Modul besteht, habe ich eine Tabelle erstellt, die wie folgt aussieht: -
tabulate_output oder
| Attenuation | Avg Ping RTT in ms | TCP UP |
|---------------:|---------------------:|---------:|
| 60 | 2.31 | 106.143 |
| 70 | 2.315 | 103.624 |
Ich möchte diese Tabelle im E-Mail-Text und nicht als Anhang mit Python senden .
Ich habe eine sendMail-Funktion erstellt und erwarte, die Tabelle im mail_body zu senden. sendMail([to_addr], from_addr, mail_subject, mail_body, [file_name])
Dieser Code sendet die Nachricht im typischen Klartext plus HTML-Format für mehrere Teile / Alternativen. Wenn Ihr Korrespondent dies in einem HTML-fähigen E-Mail-Reader liest, wird die HTML-Tabelle angezeigt. Wenn er den Klartextleser liest, sieht er die Klartextversion.
In beiden Fällen werden die im Nachrichtentext enthaltenen Daten und nicht als Anhang angezeigt.
import csv
from tabulate import tabulate
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
me = '[email protected]'
password = 'yyyzzz!!2'
server = 'smtp.gmail.com:587'
you = '[email protected]'
text = """
Hello, Friend.
Here is your data:
{table}
Regards,
Me"""
html = """
<html><body><p>Hello, Friend.</p>
<p>Here is your data:</p>
{table}
<p>Regards,</p>
<p>Me</p>
</body></html>
"""
with open('input.csv') as input_file:
reader = csv.reader(input_file)
data = list(reader)
text = text.format(table=tabulate(data, headers="firstrow", tablefmt="grid"))
html = html.format(table=tabulate(data, headers="firstrow", tablefmt="html"))
message = MIMEMultipart(
"alternative", None, [MIMEText(text), MIMEText(html,'html')])
message['Subject'] = "Your data"
message['From'] = me
message['To'] = you
server = smtplib.SMTP(server)
server.ehlo()
server.starttls()
server.login(me, password)
server.sendmail(me, you, message.as_string())
server.quit()
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen