Inhalt einer Textdatei aös Email-Body senden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
drnicolas
User
Beiträge: 105
Registriert: Sonntag 24. Juli 2016, 10:32

Ich versuche mit folgendem Code den Inhalt einer Textdatei mit Log-EInträgen zu senden.
Die Log-Einträge sollen im Email-Body und nicht als Anhang gesendet werden

Code: Alles auswählen

from email.mime.base import MIMEBase
    
    import smtplib
    import base64    

    with open (_logfile, "r") as myfile:
        data=myfile.readlines()
    
        # Create a text/plain message  
    msg=MIMEMultipart()   
    msg.attach(MIMEText(data,'plain'))
    
    msg['subject']="Testmail"
    msg['From'] = 'scanning@xyz'
    msg['To'] = 'nico@xyz'

# Send the message via our own SMTP server.
    s = smtplib.SMTP('mail.xyz')
    s.send_message(msg)
    s.quit()
    myfile.close
Das funktioniert leider nicht . Als Fehlermeldung kommt ....
" File "/usr/lib/python3.7/email/mime/text.py", line 34, in __init__
_text.encode('us-ascii')
AttributeError: 'list' object has no attribute 'encode'
"
Warum? Und vor allem: was kann ich dagegen tun?
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

MIMEText erwartete halt einen String und keine Liste. Die Einrückungen stimmen nicht. Das my in myfile ist unsinnig und das close ebenso, weil es erstens nicht aufgerufen wird und zweitens with schon die Datei schließt.
Antworten